目录
#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是以邻接多重表存储的图类型
手机扫一扫
移动阅读更方便
你可能感兴趣的文章