线性结构

Posted 小雪SS

tags:

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

一,线性表及其实现

  1. 顺序存储结构直接表述:一般数组
  2. 顺序存储结构表示非零项:结构数组
  3. 链表结构存储非零项

数组:逻辑和存储位置都相邻;

链表:逻辑相邻,存储位置不相邻

 

线性表:由同类型数据元素构成有序序列的线性结构

广义表:

  1. 线性表的推广;
  2. 广义表中元素可以是另一个广义表
  3.  union

多重链表:链表的节点可能同时隶属于多个链;结点的指针域会有多个;

十字链表

 

二,堆栈

中缀表达式:运算符位于两数之后; a+b*c-d/e

后缀表达式:运算符位于两数之后; abc*+de/-;计算机表示式求解时的读法;用堆栈实现计算

前缀表达式:运算符位于两数之前; -+a*bc/de

 

堆栈(操作受限制的线性表),先入后出,只在一端(栈顶,top)做插入和删除

用数组实现堆栈

一个数组实现两个堆栈

用链表表示堆栈,链栈,实际是个单链表。插入和删除操作只能在链栈的栈顶进行。即栈顶Top应该在链表的头,不能在尾部(单向链表只能找到下一项,找不到上一项)

 

中缀表达式转换成后缀表达式:堆栈实现,复杂度为n

  1. 运算数:直接输出;
  2. 左括号:压栈
  3. 右括号:输出栈顶元素,直到遇到左括号(出栈,不输出)
  4. 运算符:大于栈顶,压栈;小于等于栈顶,输出栈顶,比较新栈顶,循环,压栈
  5. 堆栈存留一一输出

      小于等于栈顶时,栈顶输出

堆栈其他作用:

  1. 函数调用及递归实现
  2. 深度优先搜索
  3. 回溯算法

三,队列

队列(操作受限制的线性表):先进先出,一端插入,另一端输出

数组实现

  循环队列:问题:空满时front==rear都是相等,无法区分

       原因:n种长度值对应n+1种情况

       解决方法:使用额外标记:size或者tag;仅仅使用n-1的数组空间

单链表实现

 

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

线性结构和非线性结构

线性结构和非线性结构

数据结构1 线性结构

如何区分数据结构中的线性结构与非线性结构?

数据结构线性结构-线性表

数据结构实验:线性表(1)