#include<iostream>
using namespace std;
#define OK 1
typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*LinkList;
//初始化
int InitList(LinkList &T){
T=new Lnode;
T->next=T;
return OK;
}
//创建循环链表(带尾指针)
void CreateList(LinkList &T,int n){
Lnode *p=T; //p存放头指针
for(int i=0;i<n;i++){
Lnode *s=new Lnode;
cin>>s->data;
T->next=s;
T=s;
}
T->next=p;
}
//测试
void Test(LinkList T){
cout<<"尾结点:"<<T->data<<endl;
cout<<"首元结点:"<<T->next->next->data<<endl;
}
//显示链表
void Show(LinkList T){
Lnode *p=T->next->next;
while(p!=T->next){
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
}
//合并Ta,Tb链表
LinkList Connect(LinkList Ta,LinkList Tb){
Lnode *p=Ta->next; //p存放头结点
Ta->next=Tb->next->next; //Ta.Tb首尾相接
delete Tb->next; //删除Tb头结点
Tb->next=p; //修改Tb尾结点
return Tb;
}
int main(){
LinkList Ta,Tb;
InitList(Ta);
InitList(Tb);
cout<<"请输入5个链表Ta中的元素:";
CreateList(Ta,5);
cout<<"链表Ta为:";
Show(Ta);
Test(Ta);
cout<<"请输入3个链表Tb中的元素:";
CreateList(Tb,3);
cout<<"链表Tb为:";
Show(Tb);
Test(Tb);
LinkList Tc=Connect(Ta,Tb);
cout<<endl<<"合并后链表Tc为:";
Show(Tc);
return 1;
}
运行结果