标签:链表 ext node tno 缺点 下标 查找 amp 线性表
数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。
一、线性表
线性表是一种最常用且最简单的一种数据结构,实现线性表的方式一般有两种,一种是使用数组存储线性表的元素,即用一组连续的存储单元依次存储线性表的数据元素。另一种是使用链表存储线性表的元素,即用一组任意的存储单元存储线性表的数据元素(存储单元可以是连续的,也可以是不连续的)。
数组实现的线性表的优点在于可以通过下标来访问或者修改元素,比较高效,缺点是插入和删除的花费和开销较大。
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序的。链表油一系列节点组成,这些节点不必在内存中相连。每个节点有数据部分data和链部分next,Next指向下一个节点,这样当添加或者删除时,只需要改变相关节点的Next的指向,效率很高。
1、链表的一些基本操作
一、初始化:链表初始化的作用就是生成一个链表的头指针,用来保存即将创建的链表。头指针就是链表的名字,仅仅是个指针而已。头指针内只有指针的元素,并没有数据元素,但头结点除了指针还有数据。头结点是为了操作的统一与方便而设立的,放在第一个有效元素结点(首元结点)之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等)。
二、插入链表结点
链表结尾添加结点的步骤就是新建一个链表结点,将其链接到当前链表尾指针。
在指定结点后插入结点,比如在A2结点之后插入一个结点,首先我们要新建立一个结点NodeToInsert,然后将新结点的next指针指向A3结点,并且将A2的next指针指向新建立的结点NodeToInsert,切记操作顺序不要改变。如果操作顺序变换一下,先将A2的next指向了新建立的结点,那么我们就丢失了A3的寻址方式。
三、删除链表结点
删除结点包括删除指定位置的结点和指定元素的结点。其基本原理都是先锁定待删除的结点的位置,然后将该结点的后置结点链接到前置结点的next指针处。这样中间这个结点即我们要删除的结点就从原来的链表中脱离开来。
四、获取链表长度&链表遍历
CurrentNode = CurrentNode ->next,查找链表元素或是链表置空,都需要通过遍历链表来实现。
五、链表逆序
假设当前有5个结点,head、a1、a2、a3、a4、a5,他们的头指针是head。我们的思路便是将a1作为当前元素一直往后遍历,并且将a1后面的数据依次挪到head之后。
标签:链表 ext node tno 缺点 下标 查找 amp 线性表
原文地址:https://www.cnblogs.com/xiaonizicome/p/10965070.html