青岛大学_王卓老师【数据结构与算法】Week03_10_线性表的链式表示和实现10_学习笔记

本文基于青岛大学王卓老师的教学视频,介绍了数据结构中的单链表,包括链式表示、单链表的基本操作如销毁、清空、查找、插入和删除等。特别讨论了如何删除单链表中的第i个节点,详细阐述了删除操作的算法步骤和代码实现。
摘要由CSDN通过智能技术生成

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。

一方面用于学习记录与分享,另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。

如有侵权,请留言作删文处理。

课程视频链接:

数据结构与算法基础–第3周10–2.5线性表的链式表示和实现10–单链表基本操作8–删除节点

📚 📌 📝 🔍 ⚠️ 😊 ⭐ 🔗 👋 ❓ 💬 🔹 🔸 🔖 ❗️ 💟 ➔

📚 【Week03】10_线性表的链式表示和实现10

单链表的基本操作

(1) 单链表的销毁

(2) 清空单链表

(3) 求单链表的表长

(4) 判断单链表是否为空

(5) 取值:取单链表中第 i 个元素的内容

(6) 查找

按值查找:根据指定数据获取数据所在的位置(地址)

按值查找:根据指定数据获取数据所在的位置序号

(7) 插入:在第 i 个结点前插入新结点

(8) 删除:删除第 i 个结点

(9) 单链表的建立:头插法和尾插法

【单链表的删除】删除第 i 个结点

在这里插入图片描述

【算法步骤】

在这里插入图片描述

(1) 首先找到 a_i-1 的存储位置 p,保存要删除的 a_i 的值。

(2) 令 p->next 指向 a_i+1。

(3) 释放结点 a_i 的空间。

【算法描述】
// 将线性表 L 中第 i 个数据元素删除
Status ListDelete_L(LinkList &L, int i, ElemType &e){
	// 初始化
    p = L;
    j = 0;
    // 寻找第 i-1 个结点,并令 p 指向其前驱
    while(p->next && (j<(i-1))){
        p = p->next;
        ++j;
    }
    // 删除位置是否合理判断
    if(!p->next || (j>(i-1))){
        // 第 i 个元素不存在
        return ERROR;
    }
    // 临时保存被删除结点的地址,以备释放
    q = p->next;
    // 改变删除结点前驱结点的指针域
    p->next = q->next;
    // 保存删除结点的数据域
    e = q->data;
	// 释放删除结点的空间
    delete q;
    
    return OK;
}// ListDelete_L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值