介绍
这篇文章将为大家详细讲解有关c++怎么实现接两个链表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
<强>,c++实现接两个链表实例代码强>
有以ha为头结点的链表,元素个数为m;以hb为头结点的链表,元素个数为n。现在需要你把这两个链表连接起来,并使时间复杂度最小,请分析并实现。
<强>思路:强>
很简单的链表操作的题目,逆序头部插入,并将长度较长的一方接到较短的后面,时间复杂度为O (min (m, n)),注意自由使用的地点!。
实例代码:
# include & lt; iostream>, # include & lt; string>, # include & lt; algorithm>, using namespace 性病, typedef int  ElemType;, , typedef struct  Node {, ,,ElemType 数据; struct 才能;Node *下,, * LinkList} Lnode,, , ,//打印,, void 打印(LinkList ,头), {, LinkList 才能;plist=头→下一个,, 而才能(plist !=NULL), ,{大敌; ,,,cout<& lt; plist→data<& lt;“,“, ,,,plist=plist→下一个,, ,,}, cout<才能;& lt; endl, }, ,//逆序输入链表,, void CreateList (int  LinkList 和L, m), {, ,,LinkList p; L=(LinkList)才能malloc (sizeof(节点)),, L→才能下=零;, cout<才能;& lt;“逆序输入元素,空格分隔:“& lt; & lt; endl;, ,,(int i=m; i> 0;——我), ,{大敌; ,,,p=(LinkList) malloc (sizeof(节点)),, ,,,cin>在p→数据;, ,,,p→下=L→下,, ,,,L→下=p;, ,,}, 打印(L);才能, }, ,//连接链表,, void 结合(LinkList ,哈,int m, LinkList , hb, int n, LinkList 及hc), {, selectMin; LinkList 才能; hc才能=(LinkList) malloc (sizeof(节点)),, int 才能;标志=0;, 如果才能(m> n), ,{大敌; ,,,selectMin=hb;, ,,,标志=1,,//ha在后面,, ,,}, else 才能; ,,selectMin=公顷; ,, 而才能(selectMin→下一个!=NULL), selectMin=selectMin→才能下,, ,, 如果(国旗),才能 ,{大敌; ,,,selectMin→下=ha→下,, ,,,hc=hb;, ,,,自由(ha);//notice ,,}, else 才能; ,{大敌; ,,,selectMin→下=hb→下,, ,,,hc=公顷;, ,,,(hb);自由, ,,}, cout<才能;& lt;“合并后的链表为:“& lt; & lt; endl;, 打印才能(hc);,, }, , void 毁坏(LinkList 和hc),//仅释放hc即可,, {, ,,LinkList 温度; 而才能(hc !=NULL), ,{大敌; ,,,temp=hc;, ,,,hc=hc→下一个,, ,,,自由(临时),, ,,}, }, int main (), {, int 才能;m, n,, cout<才能;& lt;“请输入以ha为头节点链表的元素个数:“& lt; & lt; endl;, ,cin>才能的在米,, LinkList 才能;哈,hb, hc,, CreateList才能(哈,m),, cout<才能;& lt;“请输入以hb为头节点链表的元素个数:“& lt; & lt; endl;, ,cin>才能的在n,, CreateList才能(hb, n),, 结合才能(哈,m, hb, n, hc),, ,, 破坏(hc);才能, return 才能,0,,,, }
关于“c++怎么实现接两个链表”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。