线性结构--栈、队列、数组

1. 栈(LIFO)

顺序栈:采用顺序存储结构的栈。(注意top指向的是栈顶元素还是栈顶元素的下一个位置)

链栈:采用链式存储结构的栈。(规定操作在表头进行;建议不带头结点,头指针就够了)

共享栈:两个顺序栈共享一个一维数组空间。栈底在空间两端,栈顶向中间延伸。

栈的应用

  1. 括号匹配中:左括号则入栈,每出现一个右括号消耗一个左括号
  2. 表达式求值中:中缀表达式转后缀/前缀表达式;                                                             计算后缀表达式(从左往右),前缀表达式(从右往左)。
  3. 递归中:利用递归工作栈进行相关数据的存储。                                                              (递归多次->栈溢出,重复计算->效率低。非递归用递归的算法完成要自定义栈。)
  4. 进制转换、迷宫求解等。

2. 队列(FIFO)

循环队列:逻辑上视为一个环。

队满判断:①牺牲一个单元格来区分队空队满 ②记录个数size  ③用tag确定操作为删除还是插入

链式队列:采用链式存储结构的队列。(带头结点更方便)

双端队列:两端都可入队出队。

队列的应用

  1. 层次遍历中:保存下一层的处理顺序
  2. 计算机系统中:主机与外设速度不匹配问题(缓冲区),多用户的资源竞争问题(如cpu分配)
  3. 页面替换算法等

3. 数组

数组的存储结构:一维,多维(行优先 / 列优先)

特殊矩阵的压缩存储: 

  • 对称矩阵——存含主对角的三角部分                                                                                   
  • 三角矩阵——存含主对角的三角部分+常量值 
  • 三对角矩阵——按行优先存储3条对角线区域                                                                         

稀疏矩阵存储

  • 三元组存储(行标,列标,值)。失去随机存取特性                                                       
  • 十字链表法存储
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值