为什么总是运行错误????
程序代码:
#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.