| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> Leap Day4——数据结构与算法 链表表示和实现 -> 正文阅读 |
|
[数据结构与算法]Leap Day4——数据结构与算法 链表表示和实现 |
目录 1、链表的概念1.1 链表的定义线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素。为了建立数据元素之间的线性关系,对每个链表结点,除存放元素自身的信息外,还需要存放一个指向其后继的指针 1.2 头指针、头结点和首元结点头指针:是指向链表中第一结点的指针; 首元结点:是指链表中存储第一个数据元素a1的结点; 头节点:是在链表的首元结点之前附设的一个结点; 1.3 空表的表示1)无头结点的链表:头指针为空时表示空表 2)有头结点的链表:当头结点的指针域为空时表示空表 1.4 头结点的好处
1.5 头结点的数据域头结点的数据域可以为空,也可以存放线性表长度等附加信息,但此结点不能计入链表长度值 1.6 链表(链式存储结构)的特点1)结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上还不相邻 2)访问时只能通过头指针进入链表,并通过每个结点的指针域依次向后顺序扫描其他结点,所以寻找的第一个结点和最后一个结点所花的时间不等(顺序存取法) 注意:顺序表是随机存取,顺序存储 链表是顺序存取,非顺序存储 2、单链表的定义单链表是由表头唯一确定,因此单链表可以用头指针的名字来命名,若头指针的名是:L,则把链表称为表L 不带头结点的单链表 定义链表头指针L:LinkList L; 定义结点指针P:LNode *p;
3、单链表的基本操作3.1 初始化
3.2 判断空表
3.3 销毁? L指向头结点的指针域,这样就指向了下一个结点,然后再指向下一个结点的指针域,不断操作,销毁单链表
3.4 清空链表仍存在,但链表中无元素,成为空链表(头指针和头结点仍然在) 算法思路:依次释放所有结点,并将头结点指针域设置为空 ?
3.5 求单链表的表长
3.6 取第i个元素值
3.7 查找3.7.1 按值查找
3.7.2 按位查找
3.8 插入1)首先找到ai-1的存储位置p 2)生成一个数据域为e的新结点s 3)插入新结点:
? 第一步、将p指向的结点的指针域(原本下个结点的地址)赋值给s的指针域 s->next = p->next; 第二步、将s的指针域赋值给将p指向的结点的指针域(原本下个结点的地址)p->next = s
3.9 删除算法步骤: 第一步、首先找到ai-1的存储位置p,保存要删除的ai的值 第二步、令p->next指向ai-1; ? 将i的指针域(i+1的指针)指向i-1的指针域(i的指针):p->next = p->next ->next
4、建立单链表4.1 头插法——每次插在头结点的后头1)从一个空表开始,重复读入数据 2)生成新结点,将读入数据存放到新结点的数据域中 3)从最后一个结点开始,依次将各结点插入到链表的前端 ?
4.2 尾插法——元素插入在链表的尾部?
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 18:22:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |