线性表
/*线性表的顺序存储类型*/
typedef struct
{ data[MaxSize]; //存放顺序表中元素
int length; //存放顺序表中长度
}SqList; //顺序表的类型定义
/*线性表的链式存储结构——单链表*/
typedef struct Lnode //定义单链表节点类型
{ Elemtype data; //存放元素值
struct Lnode *next; //指向后继节点
}LinkList;
/*线性表的链式存储结构——双链表*/
typedef struct Lnode //定义双链表节点类型
{ Elemtype data; //存放元素值
struct Dnode *prior; //指向前驱节点
struct Dnode *next; //指向后继节点
}LinkList;
栈和队列
/*栈的顺序存储结构*/
typedef struct
{ ElemType data[MaxSize];
int top; //栈顶指针
}SqStack; //定义顺序栈类型
/*栈的链式存储结构*/
typedef struct linknode
{ ElemType data; //数据域
struct linknode *next; //指针域
}LiStack; //定义链栈类型
/*队列的顺序存储结构*/
typedef struct
{ ElemType data[MaxSize]; //存放队中元素
int front,rear; //队头和队尾指针
}SqQueue; //定义顺序队类型
/*队列的链式存储结构*/
/*链队中数据节点的类型QNode定义*/
typedef struct qnode
{ ElemType data;
struct qnode *next;
}QNode; //链队数据节点类型定义
/*链队节点的类型LiQueue*/
typedef struct
{ ElemType *front;
ElemType *rear;
}LiQueue; //链队类型定义
串
/*非紧缩格式的顺序串*/
typedef struct
{ char data[MaxSize]; //存放串字符
int length; //存放串长
}SqString; //顺序串类型
/*串的链式存储结构*/
typedef struct snode
{ char data;
struct snode *next;
}LiString;
树和二叉树
/*双亲存储结构*/
typedef struct
{ ElemType data; //存放节点的值
int parent; //存放双亲的位置
}PTree[MaxSize];
/*孩子链存储结构*/
typedef struct node
{ ElemType data; //节点的值
struct node *sons[MaxSons]; //指向孩子节点
}TSonNode;
/*孩子兄弟链存储结构*/
typedef struct tnode
{ ElemType data; //节点的值
struct tnode *hp; //指向孩子
struct tnode *vp; //指向孩子节点
}TSBNode;
图
/*邻接矩阵的数据类型定义*/
#define MAXV <最大顶点个数>
typedef struct
{ int no; //顶点编号
InfoType info; //顶点其他信息
}VertexType; //顶点类型
typedef struct
{ int edges[MAXV][MAXV]; //邻接矩阵的边数组
int n,e; //顶点数、边数
VertexType vexs[MAXV]; //存放顶点信息
}MGraph; //完整的图邻接矩阵类型
/*图的邻接表存储类型*/
typedef struct ANode
{ int adjvex; //该边的终点编号
struct ANode *nextarc; //指向下一条边的指针
InfoType info; //该边的相关信息
}ArcNode; //边节点类型
typedef struct Vnode
{ Vertex data; //顶点信息
ArcNode *firstarc; //指向第一条边
}VNode; //邻接表头节点类型