25版王道数据结构课后习题详细分析 第二章线性表 2.3线性表的链式表示 代码题部分+详细注释 持续更新中

二、综合应用题

————————————————————

————————————————————

解法1:用p从头至尾扫描单链表,pre指向*p结点的前驱。若p所指结点的值为x,则删除,并让p移向下一个结点,否则让pre、p指针同步后移一个结点。

void Delete_x(LinkList& L, ElemType x) {
	LNode *q;
	LNode *pre = L;

	// 如果链表为空,直接返回
	if (L->next == NULL)
		return;

	LNode* p = L->next;  // p指向第一个结点

	while (p != NULL) {
		if (p->data == x) {
			q = p;             // 将找到的结点保存在临时变量 q 中
			p = p->next;       // p 指向下一个结点
			pre->next = p;     // 修改前一个结点的指针,跳过 q
			free(q);            // 释放 q 的内存
		}
		else {
			pre = p;           // pre 指向当前结点 p
			p = p->next;       // p 指向下一个结点
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值