顺序单链表插入新节点的一种方法

在学习链表的时候我们都接触过单链表插入新结点的问题。其中有一类就是在顺序链表中插入新节点,并保持链表的递增或者递减性质。

最近看《C和指针》一书中提到了一种方法,我个人感觉不错,并且思想非常好。

这是最常见的思维:

//sll_node.h

typedef struct Node
{
	int value;
	Node *next;
} Node;
#include "sll_node.h"
#include <stdlib.h>

#define	TRUE	1
#define	FALSE	0

// insertNode:把newValue的值插入到递增排序的链表中,正确返回TRUE,错误返回FALSE
// rootp是链表的头指针。
int insertNode(Node **rootp, int newValue)
{
	Node *newNode; // 新节点的指针
	Node *previous; // 当前指针的前一个指针
	Node *current; // 当前指针

	current = *rootp; // 初始化
	previous = NULL;

	// 查找插入的位置
	while (current != NULL && current->value < newValue)
	{
		previous = current;
		current = current->next;
	}

	// 给新节点分配空间
	newNode = (Node *)malloc(sizeof(Node));
	if (newNode == NULL)
		return FALSE;
	newNode->value = newValue;

	// 更改新节点的前驱和后继节点
	newNode->next 
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值