【学习笔记10】基本数据结构(栈 队列 链表 有根树)
2015-04-18 20:01
459 查看
#1栈和队列:
栈(stack)
动态集合先进后出(last-in,first-out,LIFO)
Insert-压入-push
Delete-弹出-pop
空-stack empty
下溢(对空栈弹出)-underflow
上溢(对满栈压入)-overflow
基本操作伪代码:
单指针:S.top
is_empty(S){ if S.top == 0 return true else return false } push(S,x){ S.top++ S[S.top] = x } pop(S){ S.top-- return S[S.top+1] }
三种基本操作push(),pop(),is_empty()-执行时间均为O(1)
队列(queue)
先进先出(FIFO)Insert-入队-Enqueue-O(1)
Delete-出队-Dequeue-O(1)
队头-head
队尾-tail
关键词:环绕
基本方法伪代码:
思路为指针对Q进行一圈圈的环绕
enqueue把x元素写入到Q.tail所指的位置中去
dequeue把Q.head所指元素return
enqueue(Q, x) { Q[Q.tail] = x if Q.tail == Q.length Q.tail = 1 else Q.tail++ } dequeue(Q){ x = Q[Q.head] if Q.head == Q.length Q.head = 1 else Q.head++ return x }
#2链表(linked list)
head-头tail-尾
sorted-已排序的
unsorted-未排序的
circular list-循环链表(head元素的prev指针指向tail元素)
空链表L.head=NIL
sentinel-哨兵(哑对象,简化边界的处理,慎用)
双向链表(doubly linked list)-每个对象含有key(关键字) prev(前驱) next(后继)
单链表(singly linked)-每个对象含有key(关键字) next(后继)
主要方法
search(L,元素中的关键字k)
insert(L,元素x)
delete(L,元素x)
#3无指针类型语言中的结构实现
对象的多数组表示
建立3xn的数组,第一行表示prev,第二行表示key,第三行表示next,同一元素的下标相同,并用一变量L存储表头元素的下标,可做链表用对象的单数组表示
建一个数组,按prev key next的顺序三个三个的依次存到数组里(每个对象依次占用长度为3的子数组),指向某个对象的指针就是该对象第一个元素的下标,考虑偏移量,易于处理异构对象(不同长度的对象)#4有根树
二叉树
p-父节点left-左孩子
right-右孩子
T.root = NIL 空树
无限制分支的有根树
将left right 换成child_1,child_2...child_n 此种方法需要预先知道每个元素孩子的数量,否则无法预先分配左孩子右兄弟表示法:
http://iprai.hust.edu.cn/icl2002/algorithm/datastructure/basic/tree/chapter6_3.htm
相关文章推荐
- 数据结构学习笔记(二) 链表之链队列基本操作
- 数据结构 学习笔记之:线性表——顺序表、静态链表、动态链表(单链表、双链表、单循环链表、双循环链表,链式栈、链式队列)——基础概念大扫盲!
- 数据结构学习笔记(二) 链表之带表头结点的单循环链表基本操作
- 数据结构学习笔记(二) 链表之链栈基本操作
- 数据结构学习笔记(二) 链表之单链表的基本操作
- 数据结构学习笔记10--栈和队列中的一些重点易错知识点
- 网易云课堂-陈越、何钦铭-数据结构-2016春,学习笔记,广义表和多重链表
- 【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- 通用链表/栈/队列-算法学习笔记十六
- nginx 学习笔记(三)基本数据结构
- 【C++数据结构学习笔记---线性表】带头结点的双向循环链表
- 数据结构学习笔记--队列
- 【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现
- 算法导论学习笔记——第10章 基本数据结构
- IOS学习笔记10-UIView的一些基本方法理解:loadView、viewDidLoad、viewDidUnload、viewWillAppear、viewWillDisappear、
- 数据结构学习笔记之线性结构--离散存储[链表]
- 算法导论 第三部分——基本数据结构——栈、队列、链表、散列表
- 数据结构学习笔记 --- 队列的应用举例(离散事件模拟)
- 数据结构学习笔记16——查找的基本概念