#include <bits/stdc++.h>
using namespace std;
typedef int Status;
typedef int Elemtype;
typedef struct LNode{
Elemtype data;
struct LNode *next;
} LNode, *LinkList;
void ListPrint(LinkList &L){
LNode *p =L ->next;
if(p==NULL)
printf("NULL");
while(p!=NULL){
if(p->next!=NULL)
printf("%d ",p->data);
else
printf("%d",p->data);
p=p->next;
}
}
//int 型
Status CreatList (LinkList &L){
LNode *p =L;//结点赋给指针p
int d;
scanf("%d",&d);//为输入第一个结点数据做准备
while(d!=-1){//只要不是句末就可以继续输入
LNode *tp=(LNode*)malloc(sizeof(LNode));
if(tp==NULL)
return -2;
tp->data=d;
p->next=tp;
tp->next=NULL;//(以上都是处理第一个数据的data域)
scanf("%d",&d);
p=p->next;
}
return 1;
}
//无指针型
void Addlist(LinkList &A,LinkList &B,LinkList &C){
LNode *pa,*pb,*pc;
pa=A->next;
pb=B->next;
pc=C;
while(pa&&pb){
if((pa->data)==(pb->data))
{pc->next=pa;//C指向A
pa=pa->next;
pb=pb->next;
pc=pc->next;}
else if((pa->data)<(pb->data))//在循环条件内不停地从上往下循环
pa=pa->next;
else //if ((pa->data)>(pb->data))
pb=pb->next;
}}
//以上这些定义的函数名必须在上先入为主
//int 型
//无指针型
int main(){
LinkList A,B,C;
A=new LNode;
if(A==NULL)
return -2;
A->next=NULL;
B=new LNode;
if(B==NULL)
return -2;
B->next=NULL;
C=new LNode;
if(C==NULL)
return -2;
C->next=NULL;
CreatList(A);
CreatList(B);
Addlist(A,B,C);
ListPrint(C);
return 0;
}
嵙小张
最新推荐文章于 2021-10-26 23:24:38 发布
这篇博客介绍了C++中链表的基本操作,包括如何创建链表、合并两个已排序链表以及打印链表内容。通过`CreatList`函数实现链表元素的输入,`Addlist`函数实现无指针型链表合并,`ListPrint`函数用于显示链表数据。示例代码展示了完整的实现过程。
摘要由CSDN通过智能技术生成