随笔 - 741  文章 - 0  评论 - 260  阅读 - 416万

基本数据结构

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

 

 

 

 

多链表多数组表示法

 

 

 



posted on   莫水千流  阅读(310)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.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()使用
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示