你这错误太多了。。。
叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
这程序我先说几个问题
一 有几个 ;号乱加
二 创建链表时for() 里显然不能后插操作(你变量不够),那只好前插(可你顺序不对)
三 你定义链表是s 是一个字符,你录入时使用了%s
四 #define NULL 0 多余
五 在连接串的函数中 里层那个for(),你看下条件,再看进行的操作,这样一来
t 一直在变化。 你如果这样就把hB中相同的也去除了(和你的注释不符)
六 在创建表的时候,没有适当的清空缓冲区,导致y无法录入,因为他把创建表时最后一个
换行符当做数据录入了。当然在创建表中间也有这问题
七 各函数起名最后第一个字母大写(和库函数区别,以免重复)
希望楼主改改。链表生成时最好后插(这样结果出来好检查)
[此贴子已经被作者于2006-4-17 18:18:55编辑过]
早上刚醒,把楼主的改了,你看看(完全按你的意思)
[QUOTE]
#include "stdio.h"
#include "malloc.h"
#include "alloc.h"
typedef struct LNode
{
char s;
struct LNode *next;
}Node,*LinkList;
LinkList head;
LinkList Creat_Linklist(int n)
{
LinkList current,newp;
int i;
head=(Node*)malloc(sizeof (Node));
current=head;
current->next=NULL;
for(i=n;i>0;--i)
{
fflush(stdin);
newp=(Node*)malloc(sizeof (Node));
scanf("%c",&newp->s); /*输入一个按一次回车*/
newp->next=current->next;
current->next=newp;
current=newp;
fflush(stdin);
}
return head;
}
void Display_Linklist(LinkList head)
{
head=head->next;
while(head!=NULL)
{
printf("%c",head->s);
head=head->next;
}
printf("\n\n");
}
LinkList Merge_Linklist(LinkList ha,LinkList hb,LinkList tail)
{
LinkList condition,del;
condition=tail;
head=ha;
for(hb=hb->next;hb!=NULL;)
{
for(ha=head->next;ha->s != hb->s;ha=ha->next)
if(ha==condition)
{
tail->next=hb;
tail=tail->next;
break;
}
del=hb;
hb=hb->next;
if(ha!=condition)
free(del);
}
tail->next=NULL;
return head;
}
void Free_Linklist(LinkList head)
{
LinkList current;
while(head)
{
current=head;
head=head->next;
free(current);
}
}
int main()
{
int x;
LinkList hA,hB,hC,tail;
printf("InPut A NO:\n");
scanf("%d",&x);
printf("Input a:\n");
hA= Creat_Linklist(x);
printf("\nInPut B NO:\n");
scanf("%d",&x);
printf("Input b:\n");
hB= Creat_Linklist(x);
for(tail=hA->next;tail->next!=NULL;tail=tail->next)
;
hC=Merge_Linklist( hA, hB, tail);
printf("\nResult:\n");
Display_Linklist(hC);
Free_Linklist(hC);
}
[/QUOTE]
C-Free XP 正确运行