标题:为什么总是运行错误????
只看楼主
傻瓜菜
Rank: 2
来 自:earth
等 级:论坛游民
帖 子:73
专家分:66
注 册:2011-10-4
结帖率:94.44%
 问题点数:0 回复次数:0 
为什么总是运行错误????
程序代码:
#include<stdio.h> 
#include<stdlib.h> 
#include<math.h> 
#include<string.h> 
#include<ctype.h> 
struct linklist  
{ 
    int data; 
    struct linklist *next; 
}; 
struct linklist* initlist() /* 初始化 */
{ 
    struct linklist *head; 
    head=(struct linklist*)malloc(sizeof(struct linklist)); 
    head->next=NULL; 
    return head; 
} 
void orderlist(struct linklist *head,int n,int sum[]) /* 在头结点后面插入n个结点,顺序 */
{ 
    int i; 
    struct linklist *p; 
    for(i=1;i<=n;i++) 
    { 
        p=(struct linklist*)malloc(sizeof(struct linklist)); 
        p->next=NULL; 
        p->next=head->next; 
        head->next=p; 
    } 
    for(i=0,p=head->next;i<n;i++) 
    { 
        p->data=sum[i]; 
        p=p->next; 
    } 
} 
void checklist(struct linklist *head) /* 顺序遍历链表,并输出 */
{ 
    struct linklist *p; 
    p=head->next; 
    while(p) 
    { 
        printf("%d ",p->data); 
        p=p->next; 
    } 
    printf("\n"); 
} 
void deletelist(struct linklist *head,int i,int len)  //删除操作
{ 
    struct linklist *p,*s; 
    int j; 
    if(i>1) 
    { 
        j=1;p=head->next; 
        while(j<i-1) 
        { 
            j++; 
            p=p->next; 
        } 
        for(j=0;j<len;j++) 
        { 
            s=p->next; 
            p->next=s->next; 
            free(s); 
        } 
    } 
    else
    { 
        p=head; 
        for(j=0;j<len;j++) 
        { 
            s=p->next; 
            p->next=s->next; 
            free(s); 
        } 
    } 
} 
void unionlist(struct linklist *a,struct linklist *b,int j)  //合并操作
{ 
    int i=1; 
    struct linklist *pa,*pb,*p; 
    pb=b->next; 
    while(i<j-1) 
    { 
        i++; 
        pb=pb->next; 
    } 
    p=pb->next; 
    pb->next=a->next; 
    pa=a; 
    while(pa->next) 
        pa=pa->next; 
    pa->next=p; 
} 
int main() 
{    
    int temp[10],sum[80],i,j,k,len,m=0,a,b,c; 
    scanf("输入i=%d,len=%d,j=%d;",&a,&b,&c); 
    struct linklist *heada,*headb; 
    char str1[200],str2[200]; 
    scanf("A链表:");
    gets(str1); 
    len=strlen(str1); 
    for(i=0;i<len;i++) 
    { 
        j=0;sum[m]=0; 
        if(isdigit(str1[i])) 
        { 
            while(isdigit(str1[i])) 
                temp[j++]=str1[i++]-'0'; 
            for(k=0;k<j;k++) 
                sum[m]=sum[m]+temp[k]*pow(10,j-k-1); 
            m++; 
        } 
    } 
    heada=initlist(); 
    orderlist(heada,m,sum); 
    deletelist(heada,a,b); 
    headb=initlist(); 
    scanf("A链表:");
    gets(str2); 
    len=strlen(str2); 
    m=0; 
    for(i=0;i<len;i++) 
    { 
        j=0;sum[m]=0; 
        if(isdigit(str2[i])) 
        { 
            while(isdigit(str2[i])) 
                temp[j++]=str2[i++]-'0'; 
            for(k=0;k<j;k++) 
                sum[m]=sum[m]+temp[k]*pow(10,j-k-1); 
            m++; 
        } 
    } 
    orderlist(headb,m,sum); 
    unionlist(heada,headb,c); 
    checklist(headb); 
    return 0; 
} 
Problem C: 两个链表之间问题(线性表)
Time Limit: 1000 Sec  Memory Limit: 128 MB
Submit: 75  Solved: 37
[Submit][Status][Web Board]
Description
已知两个单链表A和B,其头指针分别为heada和headb,编写一个过程从单链表A中删除自第i个元素起的共len个元素,然后将单链表A插入到单链表B的第j个元素之前。
Input
输入i=3,len=5,j=7;

A链表:3 5 1 6 3 4 7 5 72 34 5

B链表:5 2 3 5 7 8 5 4 6 8 4 6 9 10 23

Output
5 2 3 5 7 8 3 5 5 72 34 5 5 4 6 8 4 6 9 10 23

Sample Input
输入i=1,len=3,j=5;

A链表:13 5 14 62 3 43 71 5 72 34 5

B链表:5 20 3 53 7 81 5 42 6 8 4 6 9 10 23

Sample Output
5 20 3 53 62 3 43 71 5 72 34 5 7 81 5 42 6 8 4 6 9 10 23


题目网址是   http://acm.zjgsu.
搜索更多相关主题的帖子: next 
2012-03-19 19:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-363666-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.258637 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved