c语言中怎么交叉合并单链表

发布时间:2021-08-07 11:55:05 作者:Leah
来源:亿速云 阅读:109

这篇文章给大家介绍c语言中怎么交叉合并单链表,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

如下所示:

#include<stdio.h>#include<stdlib.h>#include<iostream> using namespace std; struct Node{ int data; Node *next;}; //初始化Node *init(){ Node *head=new Node; head->next=NULL; return head;} //头插法创建节点void insetList(Node *head,int i){ Node *cur=new Node;  cur->data=i;  cur->next=head->next; head->next=cur;} //链表A,B生成void CreateList(Node *head_A,Node *head_B){ for(int i=0;i<20;i++) {  insetList(head_A,i);  i++;  insetList(head_B,i); } //增加链表B的长度 insetList(head_B,20); insetList(head_B,25);} void Linklist(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;   delete head_B; //释放链表B} //打印链表void print(Node *head){ Node *temp=head->next; //防止头指针移动 while(temp) {  cout<<temp->data<<" ";  temp=temp->next; }}void main(){ 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语言中怎么交叉合并单链表就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. [c语言]单链表的实现
  2. 合并两个已序单链表

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c语言

上一篇:在Spring Boot应用程序中如何使用Apache Kafka

下一篇:如何解决某些HTML字符打不出来的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》