昨天在链表的顺序结构基础上对链表链式存储即单链表做了简单的介绍,今天继续。
1、单链表的读取
获得链表第i个元素的思路
(1)声明一个结点p指向链表的第一个结点,初始化j从1开始
(2)当j<1时,就遍历链表,让p的指针向后移动,不断指向下一结点,j累加1
(3)若到链表末尾p为空,说明第i个元素不存在
(4)若查找成功,返回结点p的数据
可见,单链表的查找确实不如顺序表来的快。
2、单链表的插入和删除
插入的思路:
(1)和查找一样,先声明结点p,遍历链表,找到第i个元素
(2)若找到,则声明一个空结点s
(3)将元素e赋给s->data
(4)s->next=p->next;p->next=s
删除算法的思路:
(1)和查找一样,先声明结点p,遍历链表,找到第i个元素
(2)若查找成功,将欲删除的结点p->next赋给q
(3)p->next=q->next
(4)将q的值赋给e,作为返回
(5)释放q,返回成功
可见,插入和删除都分为两部分,先查找,然后进行插入或者删除的操作
从时间复杂度角度来说,插入和删除的时间复杂度都是O(n),但是如果我们希望从第i个位置开始,插入10个元素,对于顺序存储结构来说,每一次插入都需要移动n-i个元素,每次都是O(n),而对于链式存储,找到第i个元素,此时是O(n),接下来只是简单的赋值而已,时间复杂度都是O(1),可见,对于插入或者删除越复杂的操作,单链表的效率越高。
3、单链表的整表创建
(1)声明一结点p和计数变量i
(2)初始化一个空链表L
(3)让L的头结点的指针指向null,即建立一个带头结点的单链表
(4)循环
生成一新节点赋给p
随机生成一个数赋给p的数据域
将p插入到头结点与前一新结点之间
这种方式成为头插法,相应的还有尾插法
分享到:
相关推荐
通过学习李云清的《数据结构》第三版C语言版,可以深入了解数据结构的基本概念、各种数据结构的特性、算法分析方法以及如何在C语言中实现这些数据结构和算法,这对于提升编程技能和解决实际问题的能力至关重要。
《玩转数据结构》的第1章“欢迎学习”可能介绍了数据结构的重要性、学习目标和基础概念,为后续章节的学习打下基础。通过深入学习这些知识点,你可以提升解决实际问题的能力,为成为一名优秀的程序员或数据科学家...
《数据结构教程第三版》由李春葆编写,是一本广泛使用的教材,涵盖了数据结构的基础理论和实践应用。本书不仅提供了详细的概念解释,还配以丰富的习题,帮助学生巩固所学知识。 1. **数组**:数组是最基本的数据...
"数据结构和算法分析 C++版 第三版" 本资源是《数据结构和算法分析 C++版 第三版》的摘要信息,作者是Clifford A. Shaffer,来自 Virginia Tech 的计算机科学系。该书将数据结构和算法分析的基本概念和技术进行了...
第一章节绪论,强调了数据结构课程的学习主线,即各种数据结构的抽象数据类型,包括数据集和操作集。数据集定义了数据的逻辑结构,而操作集定义了在此逻辑结构上可以执行的操作。这为理解数据结构提供了宏观的视角,...
张教授在教学过程中的感悟和经验被凝结在这本《算法与数据结构学习辅导及习题详解》之中。他认识到学生在做题时遇到的困难,并认为学生在做题过程中的错误往往是教材中未被重点解释的问题。因此,他编写本书的目的...
《数据结构(C++语言版)第三版_邓俊辉》是一本深受欢迎的教材,它专为学习数据结构和算法的计算机科学与技术学生及专业人士设计。这本书由邓俊辉教授编写,以其清晰的讲解风格和丰富的实例而闻名。第三版在前两版的...
陈越老师的《数据结构》第二版是一本深受学生和专业人士欢迎的教材,其配套的源代码为学习者提供了实践和理解数据结构算法的宝贵资源。在这个压缩包中,包含了书中的所有程序源代码,分为.txt(伪代码)和.c(C语言...
广义表的操作包括插入、删除、查找以及遍历等,掌握广义表的原理和操作方法是数据结构学习的重要一环。 学习数据结构,不仅仅是理论知识,更重要的是通过实践来加深理解。这三章内容将引导你逐步深入数据结构的世界...
邓俊辉教授的《数据结构(C++语言版)第三版》是一本深入浅出的数据结构教材,特别适合C++编程者学习。该书以其详尽的讲解和丰富的实例,深受广大读者喜爱。 本书首先介绍了数据结构的基本概念,包括数组、链表、栈...
李春葆的《数据结构教程》第三版是一本广泛使用的教材,旨在帮助初学者掌握这门关键领域的基础知识。本教程涵盖了数据结构的基本概念、设计方法以及实际应用。 首先,我们要理解什么是数据结构。数据结构是组织和...
本资源摘要信息涵盖了数据结构的基本概念、数据元素、数据结构的分类、算法的基本特性、数据存储结构、算法分析、时间复杂度和数据抽象等内容,为学习和研究数据结构提供了一个系统和全面的概述。
"数据结构(C语言版)第三版__清华大学出版社_习题参考答案分享.pdf" 本资源是清华大学出版社出版的《数据结构(C语言版)第三版》的习题参考答案分享,涵盖了数据结构的基本概念、算法和程序设计等方面的知识点。 ...
3. **栈与队列**:栈是一种后进先出(LIFO)的数据结构,常用于函数调用、表达式求值等场景。队列是先进先出(FIFO)的数据结构,适用于任务调度、打印队列等。 4. **树形结构**:树是层次化的数据结构,包括二叉树...
本资源“数据结构习题第二版习题解答”是针对数据结构第二版教材的一份习题集,旨在帮助学习者加深对数据结构理论的理解,并通过实践提升算法设计与分析能力。 数据结构主要包括数组、链表、栈、队列、树、图等基本...