[数据结构]常见数据结构的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是以邻接多重表存储的图类型  

猜你喜欢

转载自www.cnblogs.com/lx17746071609/p/11858332.html