#include <bits/stdc++.h>
using namespace std;
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
void creat_list(LinkList &L,int n)
//顺序创建链表
{
LinkList p,temp;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
temp=L;
for(int i=1;i<=n;i++){
p=(LinkList)malloc(sizeof(LNode));
cin>>p->data;
p->next=NULL;
temp->next=p;
temp=p;
}
}
void print_list(LinkList L)
{
LinkList p=L->next;
while(p){
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
}
void reverse_list(LinkList &L)
{
LinkList p,temp=L->next;
L->next=NULL;
while(temp){
p=temp->next;
temp->next=L->next;
L->next=temp;
temp=p;
}
}
int get_elem(LinkList L,int i,int &e)
//读取链表第i个元素的值,赋值给e,
//若查找失败返回0
{
LinkList p=L->next;
int cnt=1;
while(p&&cnt<i){//cnt==i时退出
p=p->next;
cnt++;
}
if(!p||cnt>i){//j>i是防止i为非正数
return 0;
}
e=p->data;
return 1;
}
int insert_list(LinkList &L,int i,int e)
//在第i个位置插入值为e的元素
{
int cnt=1;
LinkList p=L;
while(p&&cnt<i){//插入要找到第i-1个位置,
//并保证第i-1个位置不空
p=p->next;
cnt++;
}
if(!p||cnt>i)
return 0;
LinkList temp=(LinkList)malloc(sizeof(LNode));
temp->data=e;
temp->next=p->next;
p->next=temp;
return 1;
}
int delete_list(LinkList L,int i,int &e)
{
int cnt=0;
LinkList p=L,temp;
while(p->next&&cnt<i-1){//删除要找到第i-1个位置,
//并保证第i个位置不空
p=p->next;
cnt++;
}
if(!p->next||cnt>i-1)
return 0;
temp=p;
p->next=p->next->next;
e=temp->data;
free(temp);
return 1;
}
void merge_list(LinkList &La,LinkList &Lb,LinkList &Lc)
{
//把递增的La和Lb合并到Lc,Lc指向La
LinkList pa,pb,pc;
pa=La->next,pb=Lb->next;
Lc=La;
pc=La;
while(pa&&pb){
if(pa->data<=pb->data){
pc->next=pa;//pc指向下一个小的元素
pc=pa;//pc后移
pa=pa->next;//pa后移
}
else{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
if(!pa) pc->next=pb;
else pc->next=pa;
free(Lb);//释放Lb的头结点;
}
int main()
{
LinkList L;
int n,e;
int i;
// cout<<"请输入链表的元素个数";
// cin>>n;
// cout<<"请输入所有列表元素";
//creat_list(L,n);
//print_list(L);
// reverse_list(L);
// print_list(L);
// cout<<"请输入读取第几个元素的值:"<<endl;
// cin>>i;
// if(get_elem(L,i,e))
// cout<<e<<endl;
// else
// cout<<"输入的i值错误"<<endl;
// cout<<"输入要在哪个位置插入哪个元素"<<endl;
// cin>>i>>e;
// if(insert_list(L,i,e))
// print_list(L);
// else cout<<"输入的i值错误"<<endl;
// cout<<"输入要在哪个位置删除元素"<<endl;
// cin>>i;
// if(delete_list(L,i,e))
// print_list(L);
// else cout<<"输入的i值错误"<<endl;
// LinkList La,Lb,Lc;
// int na,nb;
// cout<<"输入na的大小"<<endl;
// cin>>na;
// cout<<"请输入所有列表元素"<<endl;
// creat_list(La,na);
// cout<<"输入nb的大小"<<endl;
// cin>>nb;
// cout<<"请输入所有列表元素"<<endl;
// creat_list(Lb,nb);
// print_list(La);
// print_list(Lb);
// merge_list(La,Lb,Lc);
// print_list(Lc);
return 0;
}