线性链表的应用(奇偶链表的另一种形态)代码超级详细

本文介绍了如何使用随机生成的10个3位整数构建单链表,并根据输入的基准值将其分割为两部分:小于基准值的节点和大于等于基准值的节点。通过新定义minlist和maxlist两个头指针,遍历链表,将节点分别插入相应链表,最后将maxlist连接到minlist尾部,完成链表的分割操作。

题目描述: 用随机函数生成10个3位整数(100~999),把这些整数存于单链表中,然后读入一个整数,以该值为基准把单链表分割为两部分,所有小于该值的结点排在大于或等于该值的结点之前。

题目分析: 这道题十分简单,实现的思路也非常简单

实现思路: 题目的意思其实是遍历一条链表,将链表分成以输入的median为标准的这种结构链表: 小于value的节点-> 大于value的节点
这样的话、我们可以新定义两个头指针minlist和maxlist,分别连接小于median的节点和大于median的节点,然后遍历目的链表,将小于median的节点连接在minlist中,大于median的节点连接在maxlist后面,遍历完毕之后,将maxlist链表的头结点放在minlist链表的尾部,即可。

实现代码如下:

ListNode* ListNode::Min_Max(int median) {
	//我们先创建好一个用于存储最小值的链表头指针
	ListNode* minList = new ListNode(-1);

	//存储最大值的链表头指针
	ListNode* maxList = new ListNode(-1);

	//然后对初始链表进行遍历,将每一个节点的值和median进行比较,小于median就插入到minList链表中,否则就插入到maxList链表后
	
	ListNode* p = this->next;
	while(p != NULL) {
		ListNode *pNext = p->next;
		if (p->value < median) {
			//小于输入的整数
			p->next = minList->next;
			minList->next = p;
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值