概述
2 厦门大学 2000 15分
有序线性表的合并:这个比较基础,例如给出两个链表,
h1 :1 3 5 7 9
h2 : 0 2 4
合并的结果就是 0 1 2 3 4 5 7 9
这个比较简单,直接上代码
先搭建测试环境
typedef struct
_LinkList
{
int data;
struct _LinkList *next;
}LinkList;
/*构建两个有序链表*/
void creat1(LinkList *head)
//1 3 5 7 9
{
int i = 0;
LinkList *pcur = head;
for (i = 0; i<5;i++)
{
LinkList *pm = (LinkList*)malloc(sizeof(LinkList));
pm->data = 2*i+1;
pm->next = NULL;
pcur->next = pm;
pcur = pm;
}
}
void creat2(LinkList *head) // 0 2 4
{
int i = 0;
LinkList *pcur = head;
for (i = 0; i<3;i++)
{
LinkList *pm = (LinkList*)malloc(sizeof(LinkList));
pm->data = 2*i;
pm->next = NULL;
pcur->next = pm;
pcur = pm;
}
}
直接上代码
LinkList * addList(LinkList *h1, LinkList *h2)
{
LinkList *p1 = h1->next;
LinkList *p2 = h2->next;
LinkList *phead = (LinkList *)malloc(sizeof(LinkList));
LinkList *pcur = NULL;
if (h1->data >= h2->data) //判断哪一个链表放在前面
{
phead = h2;
}
else
{
phead = h1;
}
pcur = phead;//这是我们的舞台
while (p1 && p2 )
{
//思想就是把两个链表小的通过尾插发放在舞台上
if (p1->data <= p2->data)
{
pcur->next = p1;
pcur = p1;
p1= p1->next;
}
else
{
pcur->next = p2;
pcur = p2;
p2= p2->next;
}
}
//如果两个链表还有没有结束的,直接放在后面就行了
if (p1)
{
pcur->next = p1;
}
else
{
pcur->next = p2;
}
return phead;
}
最后
以上就是踏实啤酒为你收集整理的数据结构考研复习--线性表2的全部内容,希望文章能够帮你解决数据结构考研复习--线性表2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复