数据结构类型定义: 线性表(顺序存储类型描述): #define MaxSize 50 //定义线性表的最大长度 typedef struct { ElemType data[MaxSize]; //顺序表的元素 int length; //顺序表的当前长度 } SqList; //顺序表的类型定义 线性表(动态存储类型描述) #define InitSize 100 //表长度的初始定义 typedef struct { ElemType *data; //指示动态分配数组的指针 int MaxSize,length; //数组的最大容量和当前个数 } SeqList; //动态分配数组顺序表的类型定义 L.data = (ElemType*)malloc(sizeof(ElemType)*InitSize);//初始内存分配 线性表的链式表示 单链表的结点类型描述: typedef struct LNode{ //定义单链表结点类型 ElemType data; //数据域 struct LNode *next; //指针域 }LNode,*LinkList; 双链表的结点类型描述: typedef struct DNode{ //定义双链表结点类型 ElemType data; //数据域 struct DNode *prior,*next; //前驱和后继指针 }DNode,*DLinkList; 静态链表结点类型的描述: #define MaxSize 50 //静态链表的最大长度 typedef struct { //静态链表结构类型的定义 ElemTypen data; //存储数据元素 int next; //下一个元素的数组下标 } SLinkList[MaxSize]; 栈的数据结构 顺序栈的数据结构描述 #define MaxSize 50 typedef struct { //定义栈中元素的最大个数 ElemType data[MaxSize];//存放栈中元素 int top; //栈顶指针 } SqStack; 链栈的数据结构描述 typedef struct Linknode{ ElemType data; //数据域 struct Linknode *next; //指针域 } *LiStack; //栈类型定义 队列 队列的顺序存储类型描述: #define MaxSize 50 //定义队列中元素的最大个数 typedef struct{ ElemType data[MaxSize]//存放队列元素 int front,rear;//队头指针和队尾指针 } SeQueue; 队列的链式存储 typedef struct { //链式队列结点 ElemType data; struct LinkNode *next; } LinkNode; typedef struct{ //链式队列 LinkNode *front, *rear;//队列的队头和队尾指针 } LinkQueue; 二叉树的链式存储描述 [lchild][data][rchild] 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 MaxVertexNum 100 //顶点数目的最大值 typedef char VertexType; //顶点的数据类型 typedef int 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; //指向下一条弧的指针 //InfoType info; //网的边权值 } ArcNode; typedef struct VNode{ //顶点表结点 VectexType data; //顶点信息 ArcNode *first; //指向第一条依附该顶点的弧的指针 } VNode,AdjList[MaxVertexNum]; typedef struct { //邻接表 AdjList vertices; //图的顶点数和弧数 int vexnum,arcnum; //ALGraph是以邻接表存储的图类型 } ALGraph; 图的十字链表存储结构定义如下: #define MaxVertexNum 100 //图中顶点数目的最大值 typedef struct ArcNode{ //边表结点 int tailvex, headvex; //该弧的头尾结点 struct ArcNode *hlink, *tlink; //分别指向弧头相同和弧尾相同的结点 //InfoType info; //相关信息指针 } typedef struct VNode{ //顶点表结点 VertexType data; //顶点信息 ArcNode *firstin, *firstout; //指向第一条入弧和出弧 } VNode; typedef struct { VNode xlist[MaxVertexNum]; //邻接表 int vexnum,arcnum; //图的顶点数和弧数 } GLGraph; //GLGraph是以十字邻接存储的图类型 图的邻接多重表存储结构定义如下: #define MaxVertexNum 100 //图中顶点数目的最大值 typedef struct ArcNode{ //边表结点 bool mark; //访问标记 int ivex,jvex; //分别指向该弧的两个结点 struct ArcNode *ilink,*jlink; //分别指向该弧的两个顶点的下一条边 //InfoType info; //相关信息指针 } typedef struct VNode{ //顶点表结点 VertexType data; //顶点信息 ArcNode *firstedge; //指向第一条依附该顶点的边 } VNode; typedef struct{ VNode adjmulist[MaxVertexNum]; //邻接表 int vexnum,arcnum; //图的顶点数和弧数 } AMLGraph; //AMLGraph是以邻接多重表存储的图类型