数据结构与算法简记--栈与队列

  • 操作受限的线性表---先进后出,后进先出;只能一头进出
  • 顺序栈--基于数组;    链式栈--基于链表
  • 动态扩容栈--基于动态数组结构
  • 栈应用:函数调用栈,表达式求值(操作数栈,运算符栈(比较优先级决定是出栈运算还是入栈)),括号匹配
  • 浏览器前进后退功能实现:两个栈A和B,依次打开的链接,依次入栈A,

后退操作--弹出A栈顶链接,入栈B,显示当前A栈顶链接

前进操作--弹出B栈顶链接,入栈A,显示当前A栈顶链接

点开新链接--入栈A,清空栈B,显示当前A栈顶链接

队列

  • 操作受限的线性表--先进先出,后进后出;一头进,另一头出
  • 顺序队列--基于数组;链式栈--基于链表
  • 顺序队列实现--注意队尾无空间时,在入队时执行一次数据搬移
  • 循环队列实现--注意确定队空和队满的条件:队空:head==tail 队满:(tail+1)%n=head
  • 阻塞队列:队空,读阻塞,队满,写阻塞
  • 并发队列:线程安全队列;基于数组的循环队列,利用 CAS 原子操作,可以实现非常高效的并发队列;循环队列比链式队列应用更广泛。

猜你喜欢

转载自www.cnblogs.com/wod-Y/p/11943998.html