黑皮书存储结构

发布时间 2023-12-19 17:55:09作者: 禾妮

存储结构

①顺序表的存储结构

#define MAXSIZE 100
typedef struct{
    ElemType *elem;		//存储空间的基地址
    int length;
}SqList;

②单链表的存储结构

typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

③顺序栈的存储结构

#define MAXSIZE 100
typedef struct{
    SElemType *base;
    SElemType *top;
    int stacksize;		//栈可用的最大容量
}SqStack;

④链栈的存储结构

#define MAXSIZE 100
typedef struct StackNode{
    ElemType data;
    struct StackNode *next;
}StackNode,*LinkStack;

⑤队列的顺序存储结构

#define MAXSIZE 100
typedef struct{
    QElemType *base;
    int front;			//队头指针
    int rear;			//队尾指针
}SqQueue;

⑥队列的链式存储结构

//一个同时带有队头指针和队尾指针的带头结点的单链表
typedef struct QNode{	
    QElemType data;
    struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
    QueuePtr front;		//队头指针
    QueuePtr rear;		//队尾指针
}

⑦二叉树顺序存储结构

#define MAXSIZE 100
typedef TElemType SqBiTree[MAXSIZE];	//0号单元存储根节点
SqBiTree bt;

⑧二叉树链式存储结构

typedef struct BiTNode{
    TElemType data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

⑨图的邻接矩阵存储表示

#define MaxInt 32767				//代表∞
#define MVNum 100					//最大顶点数
typedef char VerTexType;			//假设顶点的数据类型为字符型
typedef int ArcType;				//假设边的权值类型为整型
typedef struct{
    VerTexType vexs[MVNum];			//顶点表
    ArcType arcs[MVNum][MVNum];		//邻接矩阵
    int vexnum,arcnum;				//当前顶点数和边数
}AMGraph;

⑩图的邻接表存储表示

#define MVNum 100
typedef struct ArcNode{				
    int adjvex;						//该边所指顶点位置
    struct ArcNode *nextarc;		//指向下一条边的指针
    OtherInfo info;					//和边有关的信息
}ArcNode;
typedef struct VNode{
    VerTexType data;				//顶点表的数据
    ArcNode *firstarc;				//指向第一个依附于该顶点的边的指针
}VNode,AdjList [MVNum];				//全部表头结点为一个数组
typedef strutc{
	AdjList vertices;				//顶点表数组名字
    int vexnum,arcnum;				//图的当前顶点数和边数
}ALGraph;