C++实现两个已经排序的链表进行合并
来源:互联网 发布:淘宝下单微信返现 编辑:程序博客网 时间:2024/06/04 20:03
- //定义两个同种单向链表,包含一个整数值和一个指向本节点的类型的指针,该链表中的数据都已经排好序
- //编制程序,合并两个链表
- #include<iostream.h>
- #include<iomanip.h>
- struct Node
- {
- int key;
- Node *next;
- };
- void Create(Node *&);
- void Print(Node *);
- Node *Compare(Node *,Node *); //合并
- int main()
- {
- Node *list1,*list2,*head;
- Create(list1);
- cout<<"The list1 is:\n";
- Print(list1);
- Create(list2);
- cout<<"The list2 is:\n";
- Print(list2);
- cout<<"Compare the link is:\n";
- head=Compare(list1,list2);
- Print(head);
- return 0;
- }
- void Create(Node *&head) //接受引用,形参head就是指向实参的那个变量的别名
- {
- Node *pb,*pend;
- head=NULL;
- pb=pend=new Node;
- cout<<"Please input value(input 0 is over!):\n";
- cin>>pb->key;
- while(pb->key!=0)
- {
- if(head==NULL)
- head=pb;
- else
- pend->next=pb;
- pend=pb;
- pb=new Node;
- cin>>pb->key;
- }
- pend->next=NULL;
- delete pb;
- }
- void Print(Node *head)
- {
- while(head)
- {
- if(head->next==NULL)
- cout<<head->key<<endl;
- else
- cout<<head->key<<"->";
- head=head->next;
- }
- }
- Node *Compare(Node *list1,Node *list2)
- {
- Node *newhead;
- if(list1->key<=list2->key) //设置新的头结点
- newhead=list1;
- else
- newhead=list2;
- Node *prev1,*prev2;
- prev1=list1;
- prev2=list2;
- while(list1 && list2) //遍历两条链表开始合并
- {
- if(prev1->key<=prev2->key)
- {
- if(prev1->next==NULL)//是最后一个节点时终止循环
- break;
- list1=prev1->next; //预存下一个节点
- if(prev1->next->key>prev2->key)
- prev1->next=prev2; //将两个节点联系起来
- prev1=list1; //移动节点
- }
- else
- {
- if(prev2->next==NULL)
- break;
- list2=prev2->next;
- if(prev2->next->key>prev1->key)
- prev2->next=prev1;
- prev2=list2; //移动节点
- }
- }
- if(list1==NULL) //list1链表比较短时
- prev1->next=prev2;
- else
- prev2->next=prev1;
- return newhead;
- }
0 0
- C++实现两个已经排序的链表进行合并
- C++实现两个已经排序的链表进行合并
- C++实现两个已经排序的链表进行合并
- 合并两个已经排序的链表
- 合并两个已经排序的表
- leetcode合并两个已经排序的链表
- 合并两个已经排序好的链表
- 合并两个已经有序的链表
- 合并两个已经排好序的链表
- 合并两个已经排序的数组
- 合并两个已经排序的数组
- Microsoft100——005.合并两个已经排序好的链表
- 【C语言】合并,排序两个链表
- 剑指offer:合并两个排序的链表 代码实现
- 合并两个排序的链表---递归实现
- 合并两个排序的链表(Java实现)
- 合并两个排序的链表java实现
- Java实现-合并两个排序链表
- BeautifulSoup
- 矩阵 ACdream1213 Matrix Multiplication
- Linux下VIM文本内容替换
- Groovy入门教程
- UITableView的registerClass forCellReuseIdentifier用法详解
- C++实现两个已经排序的链表进行合并
- python 设置linux环境变量
- Java中加载图片方法
- 内存模型(1)
- Java中的Atomic包使用指南
- swift - The Facade Pattern
- 【CodeVS1380】【Tyvj1052】没有上司的舞会
- 非ARC下的内存释放
- 线程范围内的共享和作用