0
点赞
收藏
分享

微信扫一扫

[数据结构]常见数据结构的typedef类型定义总结


[数据结构]常见数据结构的typedef类型定义总结_data structure

目录

  • ​​数据结构类型定义:​​
  • ​​1.线性表​​
  • ​​线性表(顺序存储类型描述):​​
  • ​​线性表(动态存储类型描述)​​
  • ​​2.线性表的链式表示​​
  • ​​双链表的结点类型描述:​​
  • ​​静态链表结点类型的描述:​​
  • ​​3.栈的数据结构​​
  • ​​顺序栈的数据结构描述​​
  • ​​链栈的数据结构描述​​
  • ​​4.队列​​
  • ​​队列的顺序存储类型描述:​​
  • ​​队列的链式存储​​
  • ​​5.二叉树​​
  • ​​二叉树的链式存储描述​​
  • ​​线索二叉树的存储结构描述:​​
  • ​​6.树,森林​​
  • ​​双亲表示法的存储结构描述如下:​​
  • ​​孩子兄弟表示法的存储结构描述如下:​​
  • ​​7.​​
  • ​​图的邻接矩阵存储结构定义如下​​
  • ​​图的邻接表存储结构定义如下:​​
  • ​​图的十字链表存储结构定义如下:​​
  • ​​图的邻接多重表存储结构定义如下:​​

数据结构类型定义:

1.线性表

线性表(顺序存储类型描述):

#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);//初始内存分配

2.线性表的链式表示

单链表的结点类型描述:

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];

3.栈的数据结构

顺序栈的数据结构描述

#define MaxSize 50
typedef struct { //定义栈中元素的最大个数
ElemType data[MaxSize];//存放栈中元素
int top; //栈顶指针
} SqStack;

链栈的数据结构描述

typedef struct Linknode{
ElemType data; //数据域
struct Linknode *next; //指针域
} *LiStack; //栈类型定义

4.队列

队列的顺序存储类型描述:

#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;

5.二叉树

二叉树的链式存储描述

[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;

6.树,森林

双亲表示法的存储结构描述如下:

#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;

7.图

图的邻接矩阵存储结构定义如下

#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是以邻接多重表存储的图类型

Talk is cheap. Show me the code



举报

相关推荐

0 条评论