2线性结构——数据结构基础篇

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2线性结构——数据结构基础篇相关的知识,希望对你有一定的参考价值。

线性结构

线性结构的4大特点:

      1、有一个结点只有前驱

      2、有一个结点只有后继

      3、其他结点既有一个前驱也有一个后继

      4、在逻辑上相邻在物理上也相邻数据的逻辑关系叫做线性结构

 

线性结构的3大类型:

      1、线性表——线性表是n个数据元素的有限序列

           存储结构:

                顺序存储对应一组操作:顺序表

                链式存储对应一组操作:单向链表、双向链表、循环链表

      2、栈——限定只在表的一端(表尾)进行插入和删除操作的线性表;允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),其这一端被固定了。

           存储结构:

                顺序存储对应一组操作:顺序栈

                链式存储对应一组操作:链栈

           特性:

                后进先出

 

      3、队列——限定在表的一端(队头front)进行删除,在表的另一端(队尾rear)进行插入操作的线性表

           存储结构:

                顺序存储对应一组操作:顺序队列、循环队列

                链式存储对应一组操作:链队列

           特性:

                先进先出


存储结构下面的具体操作:

      1、线性表:

           顺序表——顺序存储对应的操作,且空间连续

              具体操作:

                  定义顺序表、建表、查询、增加、删除、修改、输出   

           链表——链式存储对应一组操作,且空间不必连续

              具体操作:

                  定义链表

                  进行以下的操作必须已经存在一个链表

                  创建链表、查询(序号、数据)、插入、删除、逆序、合并、输出

                图例过程(考点):

                 链表插入:

                 链表删除:

                 链表逆序:


        2、栈:

           栈的计算(考点):

              1、进栈出栈顺序问题

                  给出一定元素的进栈顺序,求这些元素不可能出栈的顺序情况。

              2、求栈至少多少的容量问题

                  给出一定元素的进栈顺序和出栈顺序,求至少需要多大的容量可以进行此操作。

              3、求栈中元素

                  给出栈中bottom的位置和top的位置,求栈中的元素

                     如果bottom = 0,则元素个数为|top-bottom|。

                     注意:如果top中也存放元素,则元素个数为|top-bottom+1|

                     注意:在栈中bottom一端是被固定的。

              4、栈中指针的位置

                  栈空时指针的具体位置:

                     top == 0,让元素进入当前的栈,然后是再移动top指针;这时,top指针一直在现存元素栈顶的上一个位置。

                     top == -1,先移动top指针,然后让元素进入当前的栈;这时,top指针永远指向当前元素的位置。

                  各情况的指针的具体位置:

                      注意此时定义的栈空的情形:

                          top == 0

                      出栈:

                          top -- ,读取元素

                      满栈:

                          top = 栈容量-1

                      进栈:

                          进入元素,top++

                      

           栈的基本操作:【两种存储结构都适用】

              1、栈的初始化

              2、进栈

              3、出栈

              4、判断栈空

              5、判断栈满

              6、读取栈顶元素

       3、队列:

 

           链队列——链式存储对应一组操作,且空间不必连续

              两个指针:

                队头指针Q.front指向头结点

                队尾指针Q.rear指向尾结点

              初始态:

                队空条件:

                  头指针和尾指针均指向头结点

                  Q.front = Q.rear 

 

           循环队列——顺序存储对应的操作,且空间连续

              两个指针:

                Q.front指向队列头元素

                Q.rear指向队列尾元素的下一个位置 

              具体情况的相关判断: 

                  初始态:

                        Q.front = Q.rear = 0

                  队空条件:

                      Q.front == Q.rear

                  队满条件:

                      (Q.rear + 1)% MAX == Q.front

                  入队情况:

                      Q.rear = (Q.rear + 1)%  MAX 

                   出队情况:

                      Q.front = (Q.front + 1)% MAX 

                  求队列中实际元素的个数:

                      (Q.rear - Q.front + MAX )% MAX

 

            队列的基本操作:【两种存储结构都适用】

              1、队列的初始化

                  2、销毁队列

              3、进队

              4、出队

              5、判断队空

              6、取队头元素

 

以上是关于2线性结构——数据结构基础篇的主要内容,如果未能解决你的问题,请参考以下文章

4非线性结构--图——数据结构基础篇

重学数据结构篇2 上线性表之基础知识

一篇解读顺序表(0基础看)(C语言)《数据结构与算法》

基础篇3 # 数组:为什么很多编程语言中数组都从0开始编号?

基础篇3 # 数组:为什么很多编程语言中数组都从0开始编号?

自考数据结构中的线性表,期末不挂科指南,第2篇