码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构基础知识

时间:2019-06-03 00:30:11      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:链表   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!