数据结构 合并两个链表
来源:互联网 发布:java程序开发培训班 编辑:程序博客网 时间:2024/05/22 13:16
1、合并两个链表
问题描述:设A与B分别为两个带有头结点的有序循环链表(所谓有序是指链接点按数据域值大小链接,本题不妨设按数据域值从小到大排列)。请写出将这两个链表合并为一个带头结点的有序循环链表的算法。
*******************************************************************************************
#include<stdio.h>
#include<malloc.h>
#define NULL 0
typedef struct node //建立单链表的顺序存储结构
{
int data;
struct node *next;
}*linklist,Node;
linklist creat(int n) //正序输入n个元素的值,建立带表头结点的循环链表
{
linklist head,r,p;
int x,i;
head=(Node*)malloc(sizeof(Node)); //生成新结点
r=head;
printf("输入元素:/n");
for(i=n;i>0;i--)
{
scanf("%d",&x); //输入元素值
p=(Node*)malloc(sizeof(Node));
p->data=x;
r->next=p;
r=p;
}
r->next=head;
return head;
}//建立单链表
linklist mergelist(linklist c,linklist d)
{
linklist r,p;
linklist ha,hb,hc;
ha=c->next;
hb=d->next;
hc=(Node*)malloc(sizeof(Node));
r=hc;
while(ha!=c&&hb!=d)
{
p=(Node*)malloc(sizeof(Node));
if(ha->data<hb->data)
{
p->data=ha->data;
ha=ha->next;
}
else
{
p->data=hb->data;
hb=hb->next;
}
r->next=p;
r=p;
}
if(ha!=c)
{
while(ha!=c)
{
p=(Node*)malloc(sizeof(Node));
p->data=ha->data;
ha=ha->next;
r->next=p;
r=p;
}
}
else
{
while(hb!=d)
{
p=(Node*)malloc(sizeof(Node));
p->data=hb->data;
r->next=p;
r=p;
hb=hb->next;
}
}
r->next=hc;
return hc;
}//合并链表A,B,返回链表C
void output(linklist head)
{
linklist p;
p=head->next;
do{printf("%d ",p->data);
p=p->next;
}while(p!=head);
printf("/n");
}//输出链表
void main()
{
int n,m;
linklist a,b;
printf("输入链表A要输入元素的个数:");
scanf("%d",&n);
a=creat(n); //创建链表A
printf("输入链表B要输入元素的个数:");
scanf("%d",&m);
b=creat(m); //创建链表B
printf("合成的有序链表为/n");
output(mergelist(a,b)); //输出合成的链表C
}
************************************************************************************
- 数据结构 合并两个链表
- 数据结构 两个链表合并-python
- 【数据结构】单链表—合并两个排序链表 — 递归
- 数据结构与算法(二)合并两个有序链表
- 【数据结构练习】2.两个有序链表序列的合并
- 数据结构之两个线性表的合并
- 数据结构之两个有序表的合并
- 合并两个链表
- 合并两个链表
- 合并两个链表
- 合并两个链表
- 合并两个链表
- 合并两个链表
- 数据结构 链表合并
- 2-11. 两个有序链表序列的合并(15):链表数据结构基础练习
- 数据结构_中国大学MOOC(慕课)——两个有序链表序列的合并问题
- c语言数据结构中两个有序链表合并为一个新链表
- PAT数据结构_02-线性结构1 两个有序链表序列的合并 (15分)
- 2点python注意事项
- 又一个开始
- java 异步socket(zz)
- android 移植
- 现在学Silverlight好找工作吗?
- 数据结构 合并两个链表
- 安全设置相关at流程分析
- 数据结构 表达式求值
- 重构 - 理解设计模式的捷径(4 设计模式的引入 - 工厂模式)
- 我会永远在
- 呵呵
- 真好
- 最后
- 现在