嵙小张

这篇博客介绍了C++中链表的基本操作,包括如何创建链表、合并两个已排序链表以及打印链表内容。通过`CreatList`函数实现链表元素的输入,`Addlist`函数实现无指针型链表合并,`ListPrint`函数用于显示链表数据。示例代码展示了完整的实现过程。
摘要由CSDN通过智能技术生成
#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值