/*输入两个字符串,把含有两个字符串的最小长度的字符串输出.如abc,cde,则输出abcde*/
#include<stdio.h>
#include<malloc.h>
#define NULL 0
typedef struct LNode
{
char s;
struct LNode *next;
}Node,*LinkList;
*creat(int n) /*创建表的函数*/
{
LinkList L,p;
int i;
L=(Node*)malloc(sizeof (Node));
L->next=NULL;
for(i=n;i>0;--i)
{p=(Node*)malloc(sizeof (Node));
scanf("%c",p->s);
L->next=p;
p->next=L->next;
}
return L;
}
void print(LinkList L)
{
while(L)
{
printf("%c",L->s);
L=L->next;
}
}
/*连接两个字符串,将b中与a不同的连到a的最后*/
*merge(LinkList ha,LinkList hb,LinkList t)
{ LinkList p;
for(hb=hb->next;hb!=Null;hb=hb->next)
{ for(p=ha->next;p!=t->next;p=p->next)
if(ha->s != hb->s)
{t->next=hb;
t=t->next;
break;
}
};
t->next=Null;
return ha->next;
}
main()
{ int x,y;
LinkList hA,hB,hc,ta;
printf("InPut A NO:\n");/*Input a串数*/
scanf("%d",&x);
printf("Input a串:\n");/*Input a串*/
hA=*creat(x);
for(;hA->next !=NULL;hA=hA->next)
ta=hA; /*找到a 串的末字符的尾指针*/
hA=*creat(x);
printf("InPut B NO:\n"); /*Input b串数*/
scanf("%d",&y);
printf("Input b串:\n"); /*Input b串*/
hB=*creat(y);
hc=*merge( hA, hB, ta);
print(hc);
getch();
}
/*出现的问题是当输入字符串b时一输就闪没有了*/
[此贴子已经被作者于2006-4-17 15:25:22编辑过]