有序单链表的合并
来源:互联网 发布:日语原版小说软件 编辑:程序博客网 时间:2024/06/07 16:39
#include <iostream>using namespace std;//结点的定义typedef struct LNode{int data;LNode *next;}LNode,*LinkList;//获取数据int getdata(LinkList &l,int location){LinkList p=l->next;int j=1;while (p&&j<location){p=p->next;j++;}if (!p||j>location){cout<<"错误!"<<endl;return -1;}return p->data;}//创建单链表LinkList CreateLinkList(int n){LinkList List,p,r; //p为用来指向最后插入的那个结点的辅助指针List=new LNode; //为链表list建立一个头结点List->next=NULL; //初始化List链表,使其指针域为空int value;for (int i=1;i<=n;i++){r=new LNode; //为当前插入的结点创建空间cout<<"输入第"<<i<<"个元素的数据:";cin>>value;r->data=value;r->next=NULL;if (List->next==NULL){List->next=r;}else{p->next=r;}p=r; //让p指向最后插入的新结点}return List;}//单链表的合并LinkList MergeList(LinkList &La,LinkList &Lb) //La和Lb是A,B链表的头指针{LinkList pa,pb,pc,Lc;Lc=new LNode;pa=La->next; //使pa指向La的当前待比较插入的结点(第一个)pb=Lb->next;pc=La; //使La的头结点作为Lc的头结点Lc=La;while (pa&&pb){if (pa->data>=pb->data){pc->next=pb;pc=pb;pb=pb->next;}else{pc->next=pa;pc=pa;pa=pa->next;}pc->next=pa? pa:pb; //当A或B链表其中一个为空时,将剩下的全部放到C链表}return Lc;}void main(){LinkList list1=new LNode;LinkList list2=new LNode;LinkList list3;int lengtha;cout<<"A链表的长度是:";cin>>lengtha;/*cout<<endl;*/cout<<"输入A链表的数据元素:"<<endl;list1=CreateLinkList(lengtha);cout<<endl;int lengthb;cout<<"B链表的长度是:";cin>>lengthb;/*cout<<endl;*/cout<<"输入B链表的数据元素:"<<endl;list2=CreateLinkList(lengthb);cout<<endl;list3=MergeList(list1,list2);cout<<"合并后的单链表是:";for (int i=1;i<=lengtha+lengthb;i++){cout<<getdata(list3,i)<<" ";}}
0 0
- 有序单链表的合并
- 有序单链表的合并
- 有序单链表的合并
- 有序单链表的合并
- 有序单链表的合并
- 两个有序单链表的合并&两个有序数组的合并
- 两个有序单链表的合并
- 合并两个有序的单链表
- 合并两个有序的单链表
- 合并两个有序的单链表
- 合并两个有序的单链表
- 合并两个有序的单链表
- 合并两个有序的单链表
- 合并两个有序的单链表
- 合并两个有序的单链表
- 3.两个有序单链表合并为一个有序的单链表
- 【C语言】两个有序单链表的合并
- 合并两个有序单链表的递归方法
- 总结8
- ETL利器Kettle实战应用解析系列二 【应用场景和实战DEMO下载】
- C++类和类的定义
- Oracle数据类型
- 【tool】基于主键的表在线重定义
- 有序单链表的合并
- php学习之道[1]
- tianchai 12035 宝岛探险 (BFS)
- 【Dongle】【BS学习】BS学习总结
- ETL利器Kettle实战应用解析系列三 【ETL后台进程执行配置方式】
- 为什么我们做不到【领导篇】
- Java中ThreadLocal介绍
- vim 的配置
- 349. Intersection of Two Arrays