基本数据结构
STACK-EMPTY(S)
if S.top == 0
return TRUE
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]
队列
INSERT, ENQUEUE
DELETE, 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)
x = Q[Q.head]
if (Q.head == Q.length)
Q.head = 1
else Q.head = Q.head + 1
return x
链表,双向链表,单向链表,循环链表
LIST-SEARCH(L,k)
x = L.head
while x != NULL 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
哨兵
LIST-SEARCH(L, k)
x = L.nil.next
while x != L.nil and x.key != k
x = x.next
return x
LIST-INSERT(L,x)
x.next = L.nil.next
L.nil.next.prev = x
L.nil.next = x
x.prev = L.nil
指针和对象实现
对象和多数组表示
对象和单数组表示
对象的分配与释放
假设多数组表示法中的个数组长度为m, 某一时刻动态集合中含有n<=m个元素。则n个对象代表现存于动态
集合中的元素,而余下的m-n个对象是自由的,这些自由对象可以用来表示要插入该动态集合的元素
自由表
ALLOCATE-OBJECT()
if free = NIL
error "out of space"
else x = free
free = free.next
return x
FREE-OBJECT(x)
x.next = free
free = x
多链表多数组表示法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2015-12-27 Git历险记(五)——Git里的分支&合并
2015-12-27 Git历险记(四)——索引与提交的幕后故事
2015-12-27 Git历险记(二)——Git的安装和配置
2015-12-27 Git历险记(一)
2015-12-27 Git 历险记(三)——创建一个自己的本地仓库
2015-12-27 python中的subprocess.Popen()使用