#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的结构指针