合并两个有序单链表
来源:互联网 发布:java 判断奇数偶数 编辑:程序博客网 时间:2024/06/05 17:09
#include <iostream>
using namespace std;
typedef struct Node{
int num;
struct Node * next;
}Node,*linklist;
void creatList(linklist & L){
L = new Node;
L->next = NULL;
}
void insert(int n,Node*p){
Node * s = new Node;
s->num = n;
s->next = p->next;
p->next = s;
}
void show(linklist & L){
Node * p = L->next;
while(p!=NULL){
cout <<p->num<<" ";
p=p->next;
}
cout <<endl;
}
Node * Merge(Node * head1,Node * head2){
Node * p1 = NULL;
Node * p2 = NULL;
Node * head = NULL;
//找出头结点:
if(head1->next->num < head2->next->num){
head = head1;
p1=head1->next;
p2=head2->next;
}
else{
head = head2;
p1=head1->next;
p2=head2->next;
}
//遍历两个链表,将较小的值插入当前链表中:
Node * p = head;
while(p1!=NULL && p2!=NULL){
if(p1->num <= p2->num){
p->next = p1;
p=p1;
p1=p1->next;
}
else{
p->next = p2;
p=p2;
p2=p2->next;
}
}
//将非空的链表接在后面:
if(p1!=NULL)
p->next = p1;
if(p2!=NULL)
p->next = p2;
return head;
}
int main()
{
linklist L1,L2;
Node * p,*p1,*p2;
creatList(L1);
creatList(L2);
p1 = L1;
p2 = L2;
insert(5,p1);
insert(3,p1);
insert(1,p1);
insert(6,p2);
insert(4,p2);
insert(2,p2);
show(L1);
show(L2);
p = Merge(p1,p2);
p = p->next;
while(p!=NULL){
cout <<p->num<<" ";
p=p->next;
}
cout <<endl;
return 0;
using namespace std;
typedef struct Node{
int num;
struct Node * next;
}Node,*linklist;
void creatList(linklist & L){
L = new Node;
L->next = NULL;
}
void insert(int n,Node*p){
Node * s = new Node;
s->num = n;
s->next = p->next;
p->next = s;
}
void show(linklist & L){
Node * p = L->next;
while(p!=NULL){
cout <<p->num<<" ";
p=p->next;
}
cout <<endl;
}
Node * Merge(Node * head1,Node * head2){
Node * p1 = NULL;
Node * p2 = NULL;
Node * head = NULL;
//找出头结点:
if(head1->next->num < head2->next->num){
head = head1;
p1=head1->next;
p2=head2->next;
}
else{
head = head2;
p1=head1->next;
p2=head2->next;
}
//遍历两个链表,将较小的值插入当前链表中:
Node * p = head;
while(p1!=NULL && p2!=NULL){
if(p1->num <= p2->num){
p->next = p1;
p=p1;
p1=p1->next;
}
else{
p->next = p2;
p=p2;
p2=p2->next;
}
}
//将非空的链表接在后面:
if(p1!=NULL)
p->next = p1;
if(p2!=NULL)
p->next = p2;
return head;
}
int main()
{
linklist L1,L2;
Node * p,*p1,*p2;
creatList(L1);
creatList(L2);
p1 = L1;
p2 = L2;
insert(5,p1);
insert(3,p1);
insert(1,p1);
insert(6,p2);
insert(4,p2);
insert(2,p2);
show(L1);
show(L2);
p = Merge(p1,p2);
p = p->next;
while(p!=NULL){
cout <<p->num<<" ";
p=p->next;
}
cout <<endl;
return 0;
}
typedef 把 node和*linklist 定义成了struct node 类型的了,也就是说在下面碰到 node和linklist 都可以用struct node来代替,所以,node的作用就是告诉编译器它代表名称为node的结构,*linklist的作用就是告诉编译器它代表名称为node的结构指针
0 0
- 合并两个有序单链表
- 合并两个有序单链表
- 合并两个有序单链表
- 两个有序单链表合并
- 合并两个有序单链表
- 合并两个有序单链表
- 合并两个有序单链表
- 合并两个有序单链表
- 两个有序单链表的合并&两个有序数组的合并
- 两个有序单链表的合并
- 合并两个有序的单链表
- 将两个有序单链表合并
- 合并两个有序的单链表
- 合并两个有序的单链表
- 合并两个有序单链表C++
- java 合并两个有序单链表
- 合并两个有序的单链表
- 合并两个有序的单链表
- 零基础学cocos2dx 3.0(顺带学C++)第一篇 切换场景
- 数学之路(机器学习实践指南)-文本挖掘与NLP(5)
- Java开发人员面试题目学习(极客学院)
- botstrap开发规范
- 聊聊并发(一)——深入分析Volatile的实现原理
- 合并两个有序单链表
- fhadmin, fh admin, fh admin模版下载,fh admin源码,fh admin框架
- WC2016游记
- yum install conflicts with files
- 编写基于dbscan的GPS数据热点区域分析(一)
- 【cocosStudio】查看官方示例--调用cocoStudio控件
- spring hibernate整合时SessionFactory为空
- postgresql 聚集函数加分组
- webview 无法释放内存