【CLRS】《算法导论》读书笔记(四):栈(Stack)、队列(Queue)和链表(Linked List)
来源:互联网 发布:在线广告视频制作软件 编辑:程序博客网 时间:2024/05/17 22:42
栈(Stack)
维基百科: http://en.wikipedia.org/wiki/Stack_(abstract_data_type)
在栈中,被删除的是最近插入的元素:栈实现的是一种后进先出(last-in, first-out, LIFO)策略。
栈上的INSERT操作称为压入(PUSH), 而无元素参数的DELETE操作称为弹出(POP)。
伪码:
STACK-EMPTY(S)
if S.top == 0
return TURE
else return FALSE
PUSH(S, x)
S.top = S.top + 1
S[S.top] = x
POP(S)
if STACK-EMPTY(S)
error "underflow"
else S.top = S.top - 1
return S[S.top + 1]
队列
维基百科: http://en.wikipedia.org/wiki/Queue_(abstract_data_type)
在队列中,被删去的总是在集合中存在时间最长的那个元素:队列实现的是一种先进先出(first-in, first-out, FIFO)。
队列上的INSERT操作称为入队(ENQUEUE),DELETE操作称为出队(DEQUEUE);如栈的POP操作一样,DEQUEUE操作也没有元素参数。
伪码:
ENQUEUE(Q, x)
Q[Q.tail] = x
if Q.tail == Q.length
Q.tail = 1
else Q.tail = Q.tail + 1
DEQUEUE(Q)
x = Q[Q.head]
if Q.head = Q.length
Q.head = 1
else Q.head = Q.head + 1
return x
链表
维基百科: http://en.wikipedia.org/wiki/Linked_list
链表是一种这样的数据结构,其中的各对象按线性顺序排列。
单向链表:
双向链表:
循环链表:
伪码:
(假设以下所处理的链表都是未排序的且是双链的)
LIST-SEARCH(L, k)
x = L.head
while x != NIL and x.key != k
x = x.next
return x
LIST-INSERT(L, x)
x.next = L.head
if L.head != NIL
L.head.prev = x
L.head = x
x.prev = NIL
LIST-DELETE(L, x)
if x.prev != NIL
x.prev.next = x.next
else L.head = x.next
if x.next != NIL
x.next.prev = x.prev
转载:http://www.cnblogs.com/dyingbleed/archive/2013/04/18/2996517.html
- 【CLRS】《算法导论》读书笔记(四):栈(Stack)、队列(Queue)和链表(Linked List)
- 栈(Stack)和队列(Queue)
- 算法导论Introduction to Algorithms(CLRS)
- 数据结构 二:表(list)、栈(stack)、队列(Queue)
- 《算法导论》CLRS算法C++实现(四)P85 快速排序
- 栈(stack)和队列(queue)的简单实例
- 《算法导论》CLRS算法C++实现(六)P100 基数排序
- 《算法导论》CLRS算法C++实现(十一)P163 红黑树
- 算法导论-------------队列(queue)的简单实现
- 《算法导论》CLRS算法C++实现(八)P108 最大值和最小值
- C++stl 向量,链表,栈,队列(vector, list, stack, queue)
- C# 队列(Queue)和 堆栈(Stack)
- 栈(stack)、队列(queue)和优先队列(priority_queue)用法
- 用两个栈(Stack)实现一个队列(Queue)
- 用两个栈(Stack)实现一个队列(Queue)
- 用两个栈(Stack)实现一个队列(Queue)
- 用两个队列(Queue)实现一个栈(Stack)
- 使用两个栈(stack)实现一个队列(queue)
- Cocos2d-x 3.2 自动更新 -- 使用AssetsManager更新游戏资源包
- jacob Word转html 解决图片无法显示
- 记第三期“晋IT”分享成长沙龙
- linux函数之system
- Solr4.6添加IKAnalyzer分词器
- 【CLRS】《算法导论》读书笔记(四):栈(Stack)、队列(Queue)和链表(Linked List)
- python随机数的产生
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下) .
- 【JAVA】贪吃蛇
- 转曾钦松ACM退役文章
- 权限控制
- Tomcat6.0与Solr4.6整合
- 利用Digester框架解析Xml
- automake报错