数据结构读书笔记
1.顺序表的结构定义:
#define MaxSize 50 //定义最大长度
typedef char ElemType; //字符类型别名
typedef struct //结构体类型
{
ElemType data[MaxSize]; //顺序表的容量
int length; //顺序表的存放长度
} SqList;
2.单链表的结构定义:
typedef char ElemType;
typedef struct LNode //定义单链表结点类型
{
ElemType data; //字符类型别名
struct LNode *next; //链表的指针
} LinkList;
3.双链表的结构定义:
typedef char ElemType;
typedef struct DNode //定义双链表结点类型
{
ElemType data;
struct DNode *prior; //指向前驱结点
struct DNode *next; //指向后继结点
} DLinkList;
4.循环单链表的结构定义:
typedef char ElemType;
typedef struct LNode //定义单链表结点类型
{
ElemType data;
struct LNode *next;
} LinkList;
5.循环双链表的结构定义:
typedef char ElemType;
typedef struct DNode //定义双链表结点类型
{
ElemType data;
struct DNode *prior; //指向前驱结点
struct DNode *next; //指向后继结点
} DLinkList;
6.顺序栈的结构定义:
#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int top; //栈顶指针
} SqStack;
7.链栈的结构定义:
typedef char ElemType;
typedef struct linknode
{
ElemType data; //数据域
struct linknode *next; //指针域
} LiStack;
8.顺序队列的结构定义:
#define MaxSize 5
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int front, rear; //队首和队尾指针
} SqQueue;
9.链队列的结构定义:
typedef char ElemType;
typedef struct qnode
{
ElemType data;
struct qnode *next;
} QNode;
typedef struct
{
QNode *front;
QNode *rear;
} LiQueue;
10.顺序串的结构定义:
#define MaxSize 100 //最多的字符个数
typedef struct
{
char data[MaxSize]; //定义可容纳MaxSize个字符的空间
int length; //标记当前实际串长
} SqString;
11.链串的结构定义:
typedef struct snode
{
char data;
struct snode *next;
} LiString;
12..二叉树的结构定义:
#define MaxSize 100
typedef char ElemType;
typedef struct node
{
ElemType data; //数据元素
struct node *lchild; //指向左孩子
struct node *rchild; //指向右孩子
} BTNode;
13.哈夫曼二叉树的结构定义:
#define N 50 //叶子节点数
#define M 2 * N - 1 //树中节点总数
typedef struct
{
char data[5]; //节点值
int weight; //权重
int parent; //双亲节点
int lchild; //左孩子节点
int rchild; //右孩子节点
} HTNode;
typedef struct
{
char cd[N]; //存放哈夫曼码
int start;
} HCode;
14.中序线索化二叉树的结构定义:
#define MaxSize 100
typedef char ElemType;
typedef struct node
{
ElemType data;
int ltag, rtag; //增加的线索标记
struct node *lchild; //左孩子指针
struct node *rchild; //右孩子指针
} TBTNode;
15.二叉排序树的结构定义:
#define MaxSize 100
typedef int KeyType; //定义关键字类型
typedef char InfoType;
typedef struct node //记录类型
{
KeyType key; //关键字项
InfoType data; //其他数据域
struct node *lchild,*rchild; //左右孩子指针
} BSTNode;
int path[MaxSize]; //全局变量,用于存放路径
16.邻接矩阵的结构定义:
typedef int InfoType;
#define MAXV 100 //最大顶点个数
#define INF 32767 //INF表示∞
//以下定义邻接矩阵类型
typedef struct
{
int no; //顶点编号
InfoType info; //顶点其他信息
} VertexType; //顶点类型
typedef struct //图的定义
{
int edges[MAXV][MAXV]; //邻接矩阵
int n,e; //顶点数,边数
VertexType vexs[MAXV]; //存放顶点信息
} MGraph; //图的邻接矩阵类型
17.二叉平衡树的结构定义:
typedef int KeyType; //定义关键字类型
typedef char InfoType;
typedef struct node //记录类型
{
KeyType key; //关键字项
int bf; //平衡因子
InfoType data; //其他数据域
struct node *lchild,*rchild; //左右孩子指针
} BSTNode;
18.邻接表结构定义:
typedef int InfoType;
#define MAXV 100 //最大顶点个数
#define INF 32767 //INF表示∞
//以下定义邻接表类型
typedef struct ANode //边的节点结构类型
{
int adjvex; //该边的终点位置
struct ANode *nextarc; //指向下一条边的指针
InfoType info; //该边的相关信息,这里用于存放权值
} ArcNode;
typedef int Vertex;
typedef struct Vnode //邻接表头节点的类型
{
Vertex data; //顶点信息
ArcNode *firstarc; //指向第一条边
} VNode;
typedef VNode AdjList[MAXV]; //AdjList是邻接表类型
typedef struct
{
AdjList adjlist; //邻接表
int n,e; //图中顶点数n和边数e
} ALGraph; //图的邻接表类型
19.哈希表的结构定义:
#define MaxSize 100 //定义最大哈希表长度
#define NULLKEY -1 //定义空关键字值
#define DELKEY -2 //定义被删关键字值
typedef int KeyType; //关键字类型
typedef char * InfoType; //其他数据类型
typedef struct
{
KeyType key; //关键字域
InfoType data; //其他数据域
int count; //探查次数域
} HashTable[MaxSize]; //哈希表类型
20.B-树的结构定义:
#define MAXM 10 //定义B-树的最大的阶数
typedef int KeyType; //KeyType为关键字类型
typedef struct node //B-树结点类型定义
{
int keynum; //结点当前拥有的关键字的个数
KeyType key[MAXM]; //key[1..keynum]存放关键字,key[0]不用
struct node *parent; //双亲结点指针
struct node *ptr[MAXM]; //孩子结点指针数组ptr[0..keynum]
} BTNode;
typedef struct //B-树的查找结果类型
{
BTNode *pt; //指向找到的结点
int i; //1..m,在结点中的关键字序号
int tag; //1:查找成功,O:查找失败
} Result;
int m; //m阶B-树,为全局变量
int Max; //m阶B-树中每个结点的至多关键字个数,Max=m-1
int Min; //m阶B-树中非叶子结点的至少关键字个数,Min=(m-1)/2
21.稀疏矩阵的结构定义:
#define N 4
typedef int ElemType;
#define MaxSize 100 //矩阵中非零元素最多个数
typedef struct
{ int r; //行号
int c; //列号
ElemType d; //元素值
} TupNode; //三元组定义
typedef struct
{ int rows; //行数值
int cols; //列数值
int nums; //非零元素个数
TupNode data[MaxSize];
} TSMatrix; //三元组顺序表定义