數據結構類型定義: 線性表(順序存儲類型描述): #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是以鄰接多重表存儲的圖類型