能否贴上你完整的程序?这样容易调试。
程序代码:
/* 串链表的链接 */ #include <stdio.h> #include <stdlib.h> #define LEN sizeof(STRNODE) struct strnode { char c; struct strnode *next; }; typedef struct strnode STRNODE; STRNODE *create(void) { char c; STRNODE *head,*p1, //p1总是指向新结点 *p2; //p2总是指向新表尾 head=p2=(STRNODE *)malloc(LEN ); //指向头结点 head->next=NULL; while ((c=getchar())!='\n') { p1=(STRNODE *)malloc(LEN ); p1->c=c; p2->next=p1; p2=p1; } p2->next=NULL; return head; } void print(STRNODE *head) { STRNODE *p; p=head->next; //p从表头开始遍历链表 while(p!=NULL) { putchar(p->c); p=p->next; //前进指针,让p指向下一个结点 } printf("\n"); } STRNODE *str_con(STRNODE *s1,STRNODE *s2) { STRNODE *p,*q,*s; p=s1->next; q=s2->next; do{ p=p->next; }while(p->next!=NULL); do{ s=(STRNODE *)malloc(sizeof(STRNODE)); s->c=q->c; p->next=s; p=s; q=q->next; }while(q!=NULL); p->next=NULL; return s1; } int main() { STRNODE *s1,*s2; s1=create(); s2=create(); s1=str_con(s1,s2); print(s1); return 0; }