线性结构
Posted 小雪SS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性结构相关的知识,希望对你有一定的参考价值。
一,线性表及其实现
- 顺序存储结构直接表述:一般数组
- 顺序存储结构表示非零项:结构数组
- 链表结构存储非零项
数组:逻辑和存储位置都相邻;
链表:逻辑相邻,存储位置不相邻
线性表:由同类型数据元素构成有序序列的线性结构
广义表:
- 线性表的推广;
- 广义表中元素可以是另一个广义表
- union
多重链表:链表的节点可能同时隶属于多个链;结点的指针域会有多个;
十字链表
二,堆栈
中缀表达式:运算符位于两数之后; a+b*c-d/e
后缀表达式:运算符位于两数之后; abc*+de/-;计算机表示式求解时的读法;用堆栈实现计算
前缀表达式:运算符位于两数之前; -+a*bc/de
堆栈(操作受限制的线性表),先入后出,只在一端(栈顶,top)做插入和删除
用数组实现堆栈
一个数组实现两个堆栈
用链表表示堆栈,链栈,实际是个单链表。插入和删除操作只能在链栈的栈顶进行。即栈顶Top应该在链表的头,不能在尾部(单向链表只能找到下一项,找不到上一项)
中缀表达式转换成后缀表达式:堆栈实现,复杂度为n
- 运算数:直接输出;
- 左括号:压栈
- 右括号:输出栈顶元素,直到遇到左括号(出栈,不输出)
- 运算符:大于栈顶,压栈;小于等于栈顶,输出栈顶,比较新栈顶,循环,压栈
- 堆栈存留一一输出
小于等于栈顶时,栈顶输出
堆栈其他作用:
- 函数调用及递归实现
- 深度优先搜索
- 回溯算法
三,队列
队列(操作受限制的线性表):先进先出,一端插入,另一端输出
数组实现
循环队列:问题:空满时front==rear都是相等,无法区分
原因:n种长度值对应n+1种情况
解决方法:使用额外标记:size或者tag;仅仅使用n-1的数组空间
单链表实现
以上是关于线性结构的主要内容,如果未能解决你的问题,请参考以下文章