数据结构定义

数据结构定义

静态链表

#define MaxSize 10
typedef struct {
	ElemType data;
	int next;
} SlinkList[MaxSize];

单链表

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

双链表

typedef struct DNode{
	ElemType data;
	struct DNode *prior,*next;
} DNode,*DLinklist;

顺序栈

#define MaxSize 10
typedef struct{
	ElemType data[MaxSize];
	int top;
} SqStack;

链栈(头插法)

typedef struct LinkNode{
	ElemType data;
	struct LinkNode *next;
} *LiStack;

队列(顺序实现)

#define MaxSize 10
typedef struct{
	ElemType data[MaxSize];
	int front,rear;
} SqQueue;

队列(链式实现)

typedef struct LinkNode{
	ElemType data;
	struct LinkNode *next;
} LinkNode;
typedef struct{
	LinkNode *front,*rear;
} LinkQueue;

串(顺序存储)

#define MAXLEN 255
typedef struct{
	char ch[MAXLEN];
	int length;
} SString;

串(链式存储)

typedef struct StringNode{
	char ch[4];
	struct StringNode *next;
} StringNode,*String;

二叉树(顺序存储)

#define MAXSIZE 10
struct TreeNode{
	ElemType data;
	bool isEmpty;
};
TreeNode t[10];

二叉树(链式存储)

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

线索二叉树(方便寻找中序遍历中的前趋后继)

typedef struct ThreadNode{
	ElemType data;
	struct ThreadNode*lchild,*rchild;
	int ltag,rtag; //tag==0 表示child为孩子,否则为线索
} ThreadNode,*ThreadTree;

树(孩子兄弟表示法(链式存储))

在这里插入图片描述

typedef struct CSNode{
	ElemType data;
	struct CSNode *firstchild,*nextsibling;//firstchild为左孩,nextsibling为右边的兄弟;
} CSNode,*CSTree;

二叉排序树

左子树结点<根结点值<右子树结点值

typedef struct BSTNode{
	ElemType data;
	struct BSTNode *lchild,*rchild;
} BSTNode,*BSTree;

在这里插入图片描述

十字链表

在这里插入图片描述

寻找最小生成树

  • 迪杰斯特拉( Dijkstra )算法
    基于已经求出的最短路径的基础上,求得更远顶点的最短路径。注:每次都从路径最小值开始遍历,直到到达终点。
  • 弗洛伊德( Floyd )算法
    区别于迪杰斯特拉算法,需要计算每个点之间的最短距离,思想是循环将每个点加入路径,判断经过这个点是否路径会更短。:需注意经过的点的记录方式。

寻找最短路径

  • 普里姆(Prim)算法
    选择最小边开始,然后不断尝试将别的边加入,使得不形成回路,且达到整体最小,不断重复直到加入所有点。
  • 克鲁斯卡尔(Kruskal)算法
    不断选取当前未被选取过且权值最小的边,若该边依附的顶点落在T中不同的连通分量上,不形成回环,则将此边加入,否则舍弃此边而选择下一条权值最小的边。以此类推,直至所有顶点都在一个连通分量上。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值