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

线性结构

时间:2018-05-13 21:07:26      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:找不到   后缀   前缀   等于   相等   受限   链栈   回溯算法   遇到   

一,线性表及其实现

  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的数组空间

单链表实现

 

线性结构

标签:找不到   后缀   前缀   等于   相等   受限   链栈   回溯算法   遇到   

原文地址:https://www.cnblogs.com/xiaoxue126/p/9033163.html

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