单链表

本文介绍了一种简单的单链表实现方法,包括插入和删除操作的具体步骤。通过示例代码展示了如何保持链表中数据的升序排列,并提供了使用这些功能的基本指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单链表定义如下:

typedef struct list
{
	struct list *fwd;
	int data;
} list;

根节点root不带数据,root->fwd指向首节点,为NULL表示链表为空。尾节点的fwd为NULL。

下面的例子中,数据不重复,升序排列。

插入:

int insert_list(list *root, int data)
{
	list *pCur, *pNext, *pNode;

	for (pCur = root; (pNext = pCur->fwd) != NULL; pCur = pNext)
	{
		if (pNext->data > data)
		{
			break;
		}
	}

	pNode = malloc(sizeof(list));
	if (NULL == pNode)
	{
		return -1;
	}
	pNode->data = data;
	pNode->fwd = pNext;
	pCur->fwd = pNode;

	return 0;
}

删除:

int remove_list(list *root, int data)
{
	list *pCur, *pNext;

	for (pCur = root; (pNext = pCur->fwd) != NULL; pCur = pNext)
	{
		if (pNext->data == data)
		{
			break;
		}
	}

	if (pNext)
	{
		pCur->fwd = pNext->fwd;
		free(pNext);
	}

	return 0;
}

用法:

	list root;

	root.fwd = NULL;
	root.data = -1;
	...
	insert_list(&root, n);
	...
	remove_list(&root, n);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值