[數據結構]常見數據結構的typedef類型定義總結


 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM