Structure   

Structure

1. 栈的介绍

确定入栈顺序,如何求出不正确的出栈顺序

2. 散列

2.1 定理

使用平方探测,且表的大小是素数,那么当表至少有一半是空的时候,总能够插入一个新的元素。

2.2 再散列

建立另外一个大约两倍大的表(而且使用一个相关的新散列函数),扫描整个原始散列表,计算每个元素的新散列值并将其插入到新表中。

2.3 hi(x) = (Hash(x) + F(i)) mod TableSize

2.4 双散列

3. 树

3.1 树的遍历

遍历分分先(前)序、中序、后序 先序:先访问根结点、左结点、右结点 中序:先访问左结点、根结点、右结点 后序:先访问左结点、右结点、根结点  利用堆栈实现中序排序,实现的文件见附件:tst.c 设计思路:

首先,一直往左边搜索,一路压栈,直到左节点为空,当前节点为当前节点的左节点。 判断该节点右孩子是否为空,如果不为空,则打印出当前节点,并将其右节点压入堆栈,同时置标志位为1,表示需要搜索左节点;当前节点为当前节点的右节点。 否则,打印当前节点,当前节点等于弹出的栈的数据。 else { printf(“now=%d\n”, now->data); if(sh->next != NULL) now = popStack(&sh); else now = NULL;

flag = 0; }

3.2 树的相关定义

深度 

root–>node 叫深度,node –> 自身最低叶子节点, 叫高度

伸展树

伸展树是一种二叉排序树,它能在O(logn)内完成插入、查找和删除操作。它的优势在于不需要记录用于平衡树的冗余信息。

4.List

4.1 Simple List

#include <stdio.h>
#include <malloc.h>

5. 结构体打包技艺

http://blog.csdn.net/21aspnet/article/details/6729724