本文主要是介绍数据结构知识框架图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
数据结构描述:
#define MAX 50
typedef int ElemType;//线性表:顺序
typedef struct
{//表中数据个数 int count;ElemType data[MAX];
}ArrayList;//线性表:链式,带头节点
typedef struct Node
{ElemType data;struct Node* next;
}LinkList;//栈:顺序
typedef struct
{//int count; //栈中元素的个数 int top; //栈顶的index,栈空时为-1 ElemType data[MAX];
}SqStack;//栈:链式,不要头节点,直接在链表头部进行操作
typedef struct Node
{ElemType data;struct Node* next;
}LiStack;//队列:顺序,采用循环数组,空出一个不放元素/设置一个flag表示是否队满/记录队列中元素个数
typedef struct
{//int count; //队列中元素的个数 int front,rear; //头指针和尾指针 ElemType data[MAX];
}SqQueue;//队列:链式,最好使用循环链表
typedef struct
{LinkNode* first,* last;}LiQueue;//二叉树:孩子兄弟表示法
typedef struct Node
{struct Node* lchild;struct Node* rchild;ElemType data;
}BTree;//图:
/*
邻接矩阵:
1.无向图的邻接矩阵是对称矩阵,可以只存三角矩阵
2.不带权的有向图的邻接矩阵是稀疏矩阵,可以用三元组标识
3.无向图:邻接矩阵的第i行非0元素的个数是第i个顶点的度(对于有向图,是出度)
4.易于确定顶点间是否有边,但是确定总边数时,要按行和列进行扫描,复杂。
*/
typedef struct
{int no; //定点编号 char* info; //顶点其他信息
} VertexType; //顶点类型typedef struct
{int edges[MAX][MAX]; //邻接矩阵的边数组 int n,e; //顶点数,边数 VertexType vxs[MAX]; //存放顶点信息
} MGraph;//顺序分配与链式分配的结合,邻接表
/*
邻接表:
1.表示不唯一
2.n,e的无向图需要存储n个顶点和2*e个边,对于稀疏图,邻接表更省空间
3.第i个链表的长度是顶点i的度。
4.有向图中只存储了以顶点为起点的边,不宜找到指向该顶点的边,可以设计逆邻接表,保存指向该顶点的边。
*/
typedef struct ANode
{int adjvex; ///该边的终点位置 struct ANode* nextarc; //指向下一条边的指针 char* info; //边的信息
} ArcNode;typedef struct VNode
{char* data; //顶点信息 ArcNode* firstarc; //指向第一条边
}VNode;typedef VNode AdjList[MAX];
typedef struct
{AdjList adjlist; //邻接表 int n,e; //顶点数,边数
} ALGraph; //并查集
typedef struct node
{int data; //对应此人的编号 int rank; //节点对应的秩 int parent; //节点对应的双亲节点
} UFSTree;//哈夫曼树:其实是一种贪心思想,每次选最小的两个构成一个根
typedef struct{char data;double weight;int parent;int lchild;int rchild;
}HTNode;
这篇关于数据结构知识框架图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!