数据结构总结
数据结构小结: 1,线性表 静态线性表: 结构(包含一个数组,长度);下标的计数是从1到MAXSIZE 链表: 链表具有头节点,头节点一般不放置具体的元素,头指针指向头节点,链表为空的标志为头节点的后继为空。 2,栈(后进先出) 静态栈: 栈结构体中包含数组和栈顶指针,栈顶指针指向栈顶元素。(数组从0开始计时);初始化的时候栈顶指针=-1;栈的长度为top指针+1; 链栈: 栈顶指针依旧指向栈顶元素。(指针方向是从栈顶指向栈尾) 3,队列 静态循环队列: 队列具有头指针和尾指针,头指针指向头部的第一个元素,尾指针指向尾部元素的下一个元素。 初始化的时候:q->front=q->rear=0; 队列的长度为:(q->rear-q->front+MAXSIZE)%MAXSIZE; 队列为空的判定:q->rear==q->front; 队列为满的判定:(q->rear+1)%MAXSIZE==q->front; 链队列: 队列具有头指针和尾指针,头指针指向队列头元素的前一个,尾指针指向尾元素 初始化的时候:q->front=q->rear=NULL: 队列为空的判定:q->front==q->rear;
4、二叉树
二叉树的相关性质:
1,在二叉树的第i层上至多有2的(i-1)次方个节点。
2,深度为k的二叉树至多有2的(k)次放-1个节点
3,任何一棵二叉树,如果其终端节点数目为n0,度为2的节点数为n2,那么n0=n2+1;
4,具有n个节点的完全二叉树的深度为【log2(n)】+1;简单道理,因为2的k-1次方-1<n<=2的k次方-1;
5,如果对一棵有n个结点的完全二叉树(其深度为【log2(n)】+1)的结点按照层序编号,对任何一个结点有:
(1)如果i=1,那么结点i是二叉树的根,无双亲;如果i>1,则其双亲是节点【i/2】;
(2)如果2i>n,则结点没有左孩子,否则其左孩子是节点2i
(3)如果2I+1>n,则结点没有右孩子,否则其右孩子是节点2i+1;
二叉树的三种遍历方法:
(1)前序遍历:根节点——>左子树 ——>右子数(从上到下,先左后右)
(2)中序遍历:左子树——》根节点——》右子树(从下到上,先左后右)
(3)后序遍历:左子树——》右子树——》根节点(从下到上,先左后右)