这篇文章主要介绍c语言如何实现两个单链表的交叉合并方式,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
如下所示:
#include<stdio.h> #include<stdlib.h> #include<iostream> usingnamespacestd; structNode { intdata; Node*next; }; //初始化 Node*init() { Node*head=newNode; head->next=NULL; returnhead; } //头插法创建节点 voidinsetList(Node*head,inti) { Node*cur=newNode; cur->data=i; cur->next=head->next; head->next=cur; } //链表A,B生成 voidCreateList(Node*head_A,Node*head_B) { for(inti=0;i<20;i++) { insetList(head_A,i); i++; insetList(head_B,i); } //增加链表B的长度 insetList(head_B,20); insetList(head_B,25); } voidLinklist(Node*head_A,Node*head_B,Node*List_C) { Node*pa=head_A->next;//pa指向链表A的首元节点 Node*pb=head_B->next;//pa指向链表B的首元节点 Node*pc=List_C;//pc指向C的头节点 while(pa&&pb)//某一链表遍历结束即退出 { pc->next=pa;//先存A链表的节点 pc=pa;//pc指向pa,pc前进一个节点 pa=pa->next;//pa前进一个节点 pc->next=pb;//存B链表的节点 pc=pb; pb=pb->next; } //判断谁先结束,然后把没结束的剩余结点的链接上 pc->next=pa?pa:pb; deletehead_B;//释放链表B } //打印链表 voidprint(Node*head) { Node*temp=head->next;//防止头指针移动 while(temp) { cout<<temp->data<<""; temp=temp->next; } } voidmain() { Node*head_A=init();//链表A Node*head_B=init();//链表B Node*List_C=head_A;//链表C //创建链表A,B CreateList(head_A,head_B); //打印链表 cout<<"链表A为:"; print(head_A); cout<<endl<<"链表B为:"; print(head_B); //合并链表A,B生成链表C Linklist(head_A,head_B,List_C); cout<<endl<<"链表C为:"<<endl; print(List_C); system("pause"); }
以上是“c语言如何实现两个单链表的交叉合并方式”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
C/C++如何获取CAN信号
C语言怎么通过二分查找实现猜数字游戏
C语言数据结构中的线性表怎么使用
C语言的数据结构怎么理解
C语言的数据结构怎么理解这篇文章主要介绍了C语言的数据结构怎么理解...
C语言与C++中内存管理的方法
C语言链式队列与循环队列怎么实现
C语言冒泡排序怎么实现
C语言如何实现斐波那契数列
C语言如何实现斐波那契数列这篇文章主要介绍了C语言如何实现斐波那契...
C语言如何实现无符号数和有符号数间的运算
C语言中常用的头文件是什么
C语言中常用的头文件是什么这篇文章主要介绍“C语言中常用的头文件是...
用户名
密码
记住登录状态 忘记密码?
邮箱
确认密码
我已阅读并同意 用户协议