一、线性表
#define MaxSize 100 //表长度初始定义
typedef struct
{
ElemType data[MaxSize]; //或者指示动态分配数组的指针Elemtype *data;
int length; //数组最大容量和长度
}Sqlist;
//引用L.data[x]/L.length
二、链表
1、单链表
typedef struct LNode
{
ElemType data;//数据域
struct LNode *next;//指针域
}LNode,*LinkList;
//引用L->data/L->next
2、双链表
typedef struct DLNode
{
ElemType data//数据域
struct DLNode *pre,*next;//前驱,后继
}DLNode,*DLinkList;
//新建DLNode p;
// p=(DLNode *)malloc(sizeof(DLNode));
3、栈
①顺序栈
#define MaxSize 50
typedef struct
{
ElemType data[MaxSize];
int top;
}SqStack;
//SqStack s;
//InitStack(s);初始化
//StackEmpty(s);置空
//Push(s,x);x入栈
//Pop(s,x);x出栈
//GetTop(s,x);取栈顶元素值
②链栈
typedef struct
{
ElemType data;
struct LNode *next;
}LNode;
4. 队列
①顺序存储
#define MaxSize 50
typedef struct
{
ElemType data[MaxSize];
int front,rear;
}SqQueue;
② 链式存储
#define MaxSize 50
typedef struct
{
ElemType Data;
struct LinkNode *next;
}LinkNode;
typedef struct
{
LinkNode *front;
LinkNode *rear;
int queueSize;
}LinkQueue;
//InitQueue(Q);
//IsEmpty(Q);
//EnQueue(Q);
//DeQueue(Q);
三、二叉树
1.链式存储结构体
typedef struct BTNode
{
Element Data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode,*BiTree;
2.孩子兄弟表示法
typedef struct CSNode
{
ElemType data;
struct CSNode *firstchild,*nextsibling;
}CSNode,*CSTree;
四、图
①图的邻接矩阵存储结构
#define MaxSize 100 //顶点数目最大值
typedef struct
{
char Vex[MaxSize]; //顶点表
int Edge[MaxSize][MaxSize]; //邻接矩阵,边表
int vexnum,arcnum; //图的当前顶点数和弧数
}MGraph;
②图的邻接表存储结构
#define MaxSize 100
typedef struct ArcNode{ //边表节点
int adjvex; //该弧所指向的顶点的位置
struct ArcNode *next;//指向下一条弧的指针
}ArcNode;
typedef struct VerNode{ //顶点表节点
char data; //顶点信息
struct ArcNode *firstEdge; //指向第一条依附该顶点的弧的指针
}VerNode;
typedef struct AGraph{
VerNode AdjList[MaxSize];//邻接表
int vexnum,arcnum;//图的顶点数和弧数
}AGraph;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)