//初始化 
Node*InitList()
{
	Node*head=(Node*)malloc(sizeof(Node));
	head->next=NULL;
	return head;	
} 
//输入数据 
void Add(Node*s)
{
	Node*p=s;
	int n;
	scanf("%d",&n);
	printf("请输入%d个数据:",n);
	for(int i=1;i<=n;i++)
	{
		Node*q=(Node*)malloc(sizeof(Node));
		scanf("%d",&q->data);
		p->next=q;
		p=q;
	}
	p->next=NULL;
}
//将两链表合并 
Node* MergeList(Node*p,Node*q)
{
	int length1=0,length2=0;
	Node*x=p;
	Node*y=q;
	while(x->next)
	{
		length1++;
		x=x->next;
	}
	while(y->next)
	{
		length2++;
		y=y->next;
	}
	if(length1>length2)//
	{
		x->next=q->next;
		free(q);
		return p;
	}
	else
	{
		y->next=p->next;
		free(p);
		return q;
	}
}
//显示函数 
void Display(Node*s)
{
	Node*v=s->next;
	while(v)
	{
		printf("%d",v->data);
		v=v->next;
	}
}

原代码如下:
#include<stdio.h>
#include<malloc.h>
typedef struct Node{
int data;
struct Nodenext;
}Node;
//初始化
Node
InitList()
{
Nodehead=(Node)malloc(sizeof(Node));
head->next=NULL;
return head;
}
//输入数据
void Add(Nodes)
{
Node
p=s;
int n;
scanf("%d",&n);
printf(“请输入%d个数据:”,n);
for(int i=1;i<=n;i++)
{
Nodeq=(Node)malloc(sizeof(Node));
scanf("%d",&q->data);
p->next=q;
p=q;
}
p->next=NULL;
}
//将两链表合并
Node* MergeList(Nodep,Nodeq)
{
int length1=0,length2=0;
Nodex=p;
Node
y=q;
while(x->next)
{
length1++;
x=x->next;
}
while(y->next)
{
length2++;
y=y->next;
}
if(length1>length2)
{
x->next=q->next;
free(q);
return p;
}
else
{
y->next=p->next;
free§;
return q;
}
}
//显示函数
void Display(Nodes)
{
Node
v=s->next;
while(v)
{
printf("%d",v->data);
v=v->next;
}
}
int main()
{
NodeL1=InitList();
Node
L2=InitList();
printf(“请输入链表L1中你要添加多少数据:”);
Add(L1);
printf(“L1链表数据如下:”);
printf("\n");
Display(L1);
printf("\n");
printf(“请输入链表L2中你要添加多少数据:”);
Add(L2);
printf(“L2链表数据如下”);
printf("\n");
Display(L2);
printf("\n");
Node*head=MergeList(L1,L2);
printf(“合并以后数据如下:”);
printf("\n");
Display(head);
}

posted on 2020-03-28 17:55  凸凸大军的一员  阅读(56)  评论(0编辑  收藏  举报