永发信息网

数据结构问题 已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n.试

答案:1  悬赏:70  手机版
解决时间 2021-08-20 13:33
数据结构问题 已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n.试
数据结构问题
已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n.试写一算法将这两个链表连接在一起,假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连接运算.请分析你的算法的时间复杂度.
已有下图算法,求补写完整可执行代码(完整的能运行的程序)
最佳答案

实现如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
\x09int data;
\x09Node *next;
} *LinkList;

void InitList(LinkList & l)//初始化链表
{
l = (Node*) malloc (sizeof(Node));
\x09l->next = NULL;
}

void AddList(LinkList & l,int x)//插入元素
{
LinkList pa = l;
while(pa->next)
{
\x09 pa = pa->next;
}

LinkList temp = (LinkList)malloc(sizeof(Node));
temp->data = x;
temp->next = NULL;

pa->next = temp;
}

void DelList(LinkList & l,int x)//删除链表元素
{
\x09LinkList pa = l;
\x09if(pa->next == NULL)
\x09\x09return;
\x09while(pa->next->next)
\x09{
\x09\x09pa = pa->next;
\x09}

\x09LinkList temp = pa->next;
\x09pa->next = NULL;
\x09free(temp);
}

void PrintList(LinkList &l)//打印链表元素
{
\x09LinkList pa = l->next;
\x09int count = 0;
\x09while(pa)
\x09{
\x09\x09printf("%d\t",pa->data);
\x09\x09count++;
\x09\x09if(count % 5 == 0)
\x09\x09\x09printf("\n");

\x09\x09pa=pa->next;

\x09}
\x09if(count % 5 != 0)
\x09\x09printf("\n");
}

void MergeList_L(LinkList &ha,LinkList &hb,LinkList &hc)//合并链表
{
\x09LinkList pa,pb;
\x09pa = ha;
\x09pb = hb;
\x09while(pa->next && pb->next)
\x09{
\x09\x09pa = pa->next;
\x09\x09pb = pb->next;
\x09}
\x09if(!pa->next)
\x09{
\x09\x09hc = hb;
\x09\x09while(pb->next) pb = pb->next;
\x09\x09pb->next = ha->next;
\x09}
\x09else
\x09{
\x09\x09hc = ha;
\x09\x09while(pa->next) pa = pa->next;
\x09\x09pa->next = hb->next;
\x09}
}
int main()
{
\x09LinkList ha,hb,hc;
\x09InitList(ha);
\x09InitList(hb);
\x09InitList(hc);
\x09for(int i = 0; i < 10; i++)
\x09\x09AddList(ha,i);
\x09printf("链表ha的元素有:\n");
\x09PrintList(ha);

\x09for(int i = 30; i < 35;i++)
\x09\x09AddList(hb,i);
\x09printf("链表hb的元素有:\n");
PrintList(hb);

\x09//连接操作
\x09MergeList_L(ha,hb,hc);
\x09printf("合并后链表hc的元素有:\n");
\x09PrintList(hc);

}
测试如下:

再问: MergeList函数能解释下吗
再问: while循环和if的句子
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么才能快速提高篮球技能?
霍元甲是不是沧州市东光县的
漫天飞舞的蒲公英、究竟----飘向何处
社保重大疾病包括哪些,什么是刑事重大恶性案
小学生诚实守信格言,关于诚实守信的名言
祁阳县永州威普厨卫怎么去啊,谁知道地址啊
通知作文评语,老师通知书的评语,什么意思 20
关于一首歌曲。。急需大家帮助
我想找个漂亮的,我贪心么?
女孩头顶头发稀少原因,本人25岁,头顶严重秃
我部n81怎样解决经常死机的问题
电脑无故死机怎么办??
lie down的现在分词形式是什么
鹤峰县恩施鹤峰县长友公司医务室在什么地方啊
狂战刷图四十套装推荐!
推荐资讯
朋友谢谢你给我的{电脑黑屏}的处理意见。
john is going to the cinema tomorrow一般疑
大家有没有想过,当我们逝世后,我们的思想,
家庭炒青菜怎么做好吃,蘑菇青菜怎么炒好吃
老师评价小学生评语,小学生综合素质评价表的
郸城县周口正宗平顶山老牌煎包这个地址在什么
孕妇白细胞值偏高对胎儿有什么影响
美图秀秀如何制作海报,用ps做海报怎么才能制
1990.7.7是狮子座吗
我的脾气很暴躁也很冲动,有时候几乎失去理智
谁有Wonder girls的所有成员资料啊, 她们在
表示感情的唯美句子,唯美的句子,关于爱情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?