这学期学完数据结构,到最后自己要写的时候,最基础的结构体还是不熟悉,整理一下,放在一起
线性表
typedef struct List {
Elemtype* elem;
int length;//当前长度
int listsize;//已分配空间
}list;
栈
typedef struct {
SElemType* base;
SElemType* top;
int stacksize;//已经分配的空间
}SqStack
队列
typedef int QElemType;
typedef struct QNode{
QElemType data;
struct QNode* next;
}QNode,*QueuePtr;//表结点
typedef struct {
QueuePtr front;//队头指针
QueuePtr rear;//队尾指针
}LinkQueue;
二叉树
- 顺序存储
# define MAX_TREE_NUM 100
typedef TElemType SqBiTree[MAX_TREE_NUM];
- 链式
typedef int TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode* lchild, * rchild;
}BiTNode,BiTree;
- BiTNode是二叉树的结点,BiTree是结点的指针,
一棵二叉树是一个根结点的指针
图
- 邻接矩阵
#define INFINITY 99999
#define MAX_VERTEX_NUM 20
typedef enum{DG,DN,UDG,UDN} GraphKind;//{有向图,有向网,无向图,无向网}
typedef int VRType;//顶点关系,即边
typedef char InfoType;
typedef struct ArcCell {
VRType adj;
InfoType Info;
}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//邻接矩阵
typedef char VertexType;
typedef struct {
VertexType vexs[MAX_VERTEX_NUM];//顶点数组
AdjMatrix arcs;//邻接矩阵
int vexnum, arcnum;
GraphKind kind;
}MGraph;
- 邻接表
#define MAX_VERTEX_NUM 20
typedef char InfoType;
typedef struct ArcNode {
int adjvex;
struct ArcNode* nextarc;
InfoType* Info;
}ArcNode;//邻接表的表结点
typedef char VertexType;//顶点类型
typedef struct {
VertexType data;
ArcNode* firstarc;
}VNode,AdjList[MAX_VERTEX_NUM];//存放顶点信息的数组
typedef struct {
AdjList vertices;
int vexnum, arcnum;
int kind;
}ALGraph;/*图的所有信息*/