C语言中的二级指针(2) -- 链表操作

一个链表中所有元素通过指针串联起来,链表的插入、删除等操作都是对指针的操作。

使用指针操作链表

例如,下面的代码段实现了一个删除链表节点的函数,很多人都会采用类似的代码删除链表节点。
/* 结构体定义 */
struct testdata
{
	struct testdata * next; //指向链表下一个节点的指针
	int id;
};

/* 链表头 */
struct testdata * td_head = NULL;

/* 删除id=tid的链表节点 */
int delete_from_list(int tid)
{
	struct testdata * cursor = td_head;
	struct testdata * prev;
	
	while (cursor != NULL)
	{
		if (cursor->id == tid)
		{
			/* 如果待删除的节点是链表头 */
			if (cursor == td_head)
			{
				td_head = cursor->next;
			}
			else /* 如果待删除的节点不是链表头 */
			{
				prev->next = cursor->next;
			}
			free(cursor);
			return 0;
		}
		prev = cursor;
		/* 遍历所有节点 */
		cursor = cursor->next;
	}
	return -1;
}

在上述代码删除节点时,需要区分头结点和其他节点。同样的,如果是在链表末尾插入节点,也要考虑头结点和其他节点的情况。

使用二级指针操作链表<

  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值