#include <iostream>
#include<mm_malloc.h>
#include<stdio.h>
//数据结构
typedef struct Lnode{
int data;
struct Lnode* next;
}Lnode,*LinkList;
//链表合并
void MergeLinkList(LinkList &La,LinkList &Lb){
Lnode *pa,*pb,*r;
pa=La->next;
pb=Lb->next;
La->next=NULL;//新表表结点置空
r=La;//r指向新表表结点末尾
while(pa&&pb){
if(pa->data<pb->data){//将较小结点尾插法插入新表中
r->next=pa;
r=pa;
pa=pa->next;
}
else{
r->next=pb;
r=pb;
pb=pb->next;
}
}
while(pa){
r->next=pa;
r=pa;
pa=pa->next;
}
while(pb){
r->next=pb;
r=pb;
pb=pb->next;
}
r->next=NULL;
free(Lb);
}
//创建链表
LinkList CreatLink()
{
int n;
scanf("%d",&n);
LinkList L;
L=(Lnode*)malloc(sizeof(Lnode));
Lnode *p,*r;
r=L;
for(int i=0;i<n;i++){
p=(Lnode*)malloc(sizeof(Lnode));
scanf("%d",&p->data);
r->next=p;
r=p;
}
r->next=NULL;
return L;
}
//输出链表
void PrintLinkList(LinkList L){
Lnode *p;
p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
//主函数
int main(){
LinkList La=CreatLink();
LinkList Lb=CreatLink();
MergeLinkList(La,Lb);
PrintLinkList(La);
}
【无标题】
该博客主要介绍了如何使用C++实现链表数据结构,并展示了如何合并两个已排序的链表,以及如何创建和打印链表。通过`MergeLinkList`函数,实现了根据元素值将两个链表按升序合并。此外,还提供了`CreatLink`函数用于创建链表,以及`PrintLinkList`函数用于输出链表内容。
摘要由CSDN通过智能技术生成