c语言合并两个单链表LA和LB,把两个递增的单链表La,Lb,合并成一个递减的单链表Lc...

该博客介绍了如何使用C语言将两个递增有序的单链表合并为一个递减有序的单链表。通过指针平行移动策略,实现了在已知两个链表长度的情况下,利用原有链表节点空间构建新的链表。博客提供了一个完整的C语言程序,包括创建和打印链表功能,以及合并两个链表的`CreatC`函数。
摘要由CSDN通过智能技术生成

原文题是严蔚敏同志的数据结构习题中第二章线性表中提出的问题。

原问如下:

2.24 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表与B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元表)排列的线性表C,并要求利用原表(即A表与B表)的结点空间构造C表。

分析:对两个或两个以上,结点按元素值递增/减排列的单链表进行操作时,应采用"指针平行移动、一次扫描完成"的策略。且链表A与链表B的长度大小不一定相等。

代码:

#include

using namespace std;

typedef int ElemType;

//两个递增的链表合并成递增的链表。

typedef struct LNode

{

ElemType data;

struct LNode *next;

}

LNode;

typedef LNode *LinkList;

void CreatList(LinkList &L,int n)

{

LinkList p,q;

L=new LNode;

L->next=NULL;

q=L;

cout<

for (int i=1;i<=n;i++)

{

p=new LNode;

cin>>p->data;

p->next=q->next;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值