#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
typedef struct link_node
{
datatype info;
struct link_node *next;
} node,*linklist;
void Init(linklist *L)
{
*L=(node*)malloc(sizeof(node));
(*L)->next=NULL;
}
void Create_Head_List(linklist L)
{
node *s;
datatype c;
char b; //*判断是否继续输入数据*//
int flag=1;
while(flag)
{
printf("请输入一个数据:\n");
scanf("%d",&c);
L->info=c;
s->next=L->next;
L->next=s;
getchar();
printf("是否继续输入(Y/N)\n");
b=getchar();
if(b=='Y'||b=='y')
continue;
else
break;
}
}
linklist MergeTwoOrderedLists(linklist pHead1, linklist pHead2)
{
linklist pTail = NULL;//指向新链表的最后一个结点 pTail->next去连接
linklist newHead = NULL;//指向合并后链表第一个结点
if (NULL == pHead1)
{
return pHead2;
}
else if(NULL == pHead2)
{
return pHead1;
}
else
{
//确定头指针
if ( pHead1->info > pHead2->info)
{
newHead = pHead1;
pHead1 = pHead1->next; //指向链表的第二个结点
}
else
{
newHead = pHead2;
pHead2 = pHead2->next;
}
pTail = newHead; //指向第一个结点
while ( pHead1 && pHead2)
{
if ( pHead1->info >= pHead2->info )
{
pTail->next = pHead1;
pHead1 = pHead1->next;
}
else
{
pTail->next = pHead2;
pHead2 = pHead2->next;
}
pTail = pTail->next;
}
if(NULL == pHead1)
{
pTail->next = pHead2;
}
else if(NULL == pHead2)
{
pTail->next = pHead1;
}
return newHead;
}
void PrintList(linklist L)
{
while(L)
{
printf("%d--> ",L->info);
L = L->next;
}
printf("NULL\n");
}
void main()
{
linklist L1,L2;
Init(&L1);
Init(&L2);
printf("输入第一个单链表的数据:\n");
Create_Head_List(L1);
printf("输入第二个单链表的数据:\n");
Create_Head_List(L2);
printf("合并前的L1、L2的数值为:\n");
PrintList(L1);
PrintList(L2);
printf("合并之后的单链表为:\n");
PrintList(MergeTwoOrderedLists(L1, L2));
}
有一个错误我始终不知道在哪里 希望大神帮我看一下 错误如图所示
|