线性表的定义
顺序表
#define MaxSize 100
typedef struct {
ElemType data[MaxSize];
int length;
}SqList;
#define InitSize 100
typedef struct {
ElemType *data;
int MaxSize,length;
}SqList;
单链表
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
双链表
typedef struct DNode {
ElemType data;
struct DNode *prior, *next;
}DNode, *DLinkList;
静态链表
#define MaxSize 100
typedef struct {
ElemType data;
int next;
}SLinkList[MaxSize];
栈的定义
顺序栈
#define MaxSize 100
typedef struct {
ElemType data[MaxSize];
int top;
} SqStack;
链栈
typedef struct Linknode {
ElemType data;
struct Linknode *next;
} *LiStack;
队列
顺序队列
#define MaxSize 100
typedef struct {
ElemType data[MaxSize];
int front, rear;
}SqQueue;
链队列
typedef struct LinkNode {
ElemType data;
struct LinkNode, *next;
}LinkNode;
typedef struct {
LinkNode *front, *rear;
}LinkQueue;
二叉树
typedef struct BiTNode {
ElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
线索二叉树
typedef struct ThreadNode {
ElemType data;
struct ThreadNode *lchild, *rchild;
int ltag, rtag;
}ThreadNode, *ThreadTree;
双亲表示法
#define MAX_TREE_SIZE 100
typedef struct {
ElemType data;
int parent;
}PTNode;
typedef struct {
PTNode nodes[MAX_TREE_SIZE];
int n;
}PTree;
孩子兄弟表示法
typedef struct CSNode {
ElemType data;
struct CSNode *firstchild, *nextsibling;
}CSNode, *CSTree;
并查集
#define SIZE 100
int UFSets[SIZE];
图
邻接矩阵
#define MaxVertexNum 100
typedef struct VertexType;
typedef struct EdgeType;
typedef struct {
VertexType Vex[MaxVertexNum];
EdgeType Edge[MaxVertexNum][MaxVertexNum];
int vexnum, arcnum;
}MGraph;
邻接表
#define MaxVertexNum 100
typedef struct ArcNode {
int adjvex;
struct ArcNode *next;
}ArcNode;
typedef struct VNode {
VertexType data;
ArcNode *first;
}VNode, AdjList[MaxVertexNum];
typedef struct {
AdjList vertices;
int vexnum, arcnum;
}ALGraph;