【数据结构】-单链表-按照递减的顺序合并两个递增的单链表

本文探讨如何使用前后指针技巧,结合单链表操作,将两个递增的单链表合并为一个按递减顺序排列的新链表。
摘要由CSDN通过智能技术生成

 这道题融汇了单链表编程中的几个重要技巧

1.前后指针

2.头指针next设置为空,用原始节点组合成新的单链表

根据下面这个例子不难看懂

 

 LinkList  Re_Con_Sort(LinkList L, LinkList M){
	 LNode*p = L->next, *q = M->next;
	 LNode *p_rear = NULL;
	 LNode *q_rear = NULL;
	 L->next = NULL;
	 M->next = NULL;
	 while (p&&q)
	 {
		 p_rear = p->next;
		 q_rear = q->next;
		 if (p->data < q->data) {
			 p->next = M->next;
			 M->next = p;
			 p = p_rear;
		 }
		 else {
			 q->next = M->next;
			 M->next = q;
			 q = q_rear;
		 }
	 }
	 if (p == NULL && q == NULL)return M;//一样长
	 if (q != NULL)p=q;
	
	 while (p)
	 {  
		 p_rear = p->next;
		 p->next = M->next;
		 M->next = p;
		 p = p_rear;
	 }
 }

 int main() {
	 LinkList L = NULL;
	 LinkList M = NULL;
	 L = List_TailInsert(L);
	 M = List_TailInsert(M);
	 Re_Con_Sort(L, M);
	 List_Print(M);
 }

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vector<>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值