#include
#include
typedef struct Node
{
int data;
struct Node* next;
}Node,*LinkList;
InitList(LinkList* L)
{
*L = (LinkList)malloc(sizeof(Node));
(*L)->next = NULL;
}
void CreatFromTail(LinkList L)
{
Node* r, * s;
int flag = 1;
r = L;
char c;
while (flag) {
c = getchar();
if (c !='\n')
{
s = (Node*)malloc(sizeof(Node));
s->data = c;
r->next = s;
r = s;
}
else
{
flag = 0;
r->next = NULL;
}
}
}
LinkList MergeLinkList(LinkList LA, LinkList LB)
{
Node* pa, * pb;
LinkList LC; LinkList r;
pa = LA->next;
pb = LB->next;
LC = LA;
LC->next = NULL; r = LC;
while (pa != NULL && pb != NULL)
{
if (pa->next <= pb->next) {
r->next = pa; r = pa; pa = pa->next;
}
else {
r->next = pb; r = pb; pb = pb->next;
}
if (pa) {
r->next = pa;
}
else {
r->next = pb;
}
free(LB);
return(LC);
}
}
Node* GetData(LinkList L, int i)
{
int j;
Node* p;
if (i <= 0)
return NULL;
p = L; j = 0;
while ((p->next != NULL) && (j < i))
{
p = p->next;
j++;
}
if (i == j)
return p;
else
return NULL;
}
int ListLength(LinkList L)
{
Node* p; int j;
p = L->next;
j = 0;
while (p != NULL)
{
p = p->next;
j++;
}
return j;
}
int main()
{
int l = 0;
Node *tmp=NULL;
LinkList LA;
LinkList LB;
LinkList temp;
InitList(&LA);
InitList(&LB);
CreatFromTail(LA);
/*printf("H\n");*/
CreatFromTail(LB);
temp=MergeLinkList(LA, LB);
l = ListLength(temp);
for (int i = 1; i <= l; i++)
{
tmp=GetData(temp, i);
printf("%d", tmp->data);
}
}
116行修改为
printf("%c ", tmp->data);