数据结构
AriKKK
这个作者很懒,什么都没留下…
展开
-
借助快速排序算法思想实现在一组无序记录中查找关键字等于给定值key的算法
参考下述代码即可:原创 2020-12-22 15:58:57 · 3583 阅读 · 0 评论 -
无向图的邻接矩阵转为对应邻接表
解题思路:这道题是一道很有意思的题,作为最后一道大题,同时考察了对邻接矩阵和邻接表两种图的基本存储类型的掌握。题目中没有给出邻接矩阵和邻接表的结构定义,所以这里在答案中均需自行给出。第一个for循环初始化邻接表(声明结点数个邻接表并初始化为空值);接下来双重for循环遍历邻接矩阵,其元素值不为空(存在结点边的关系)时便以头插法将弧结点插入。注意到题目中所说为无向图,无向图出度和入度相等,故直接按此操作遍历完整个邻接矩阵即可。...原创 2020-12-11 17:52:47 · 3036 阅读 · 6 评论 -
求邻接表表示的有向图的顶点入度的算法
解题思路:众所周知,这里有向图的邻接表指的是方便求结点出度的邻接表(对应方便求入度的表为逆邻接表)。而在这种方便求出度的普通邻接表中想求结点入度,只有在结点集合中遍历所有结点(即下图答案中for循环所做的事情),并在每一个结点的邻接表表头开始依次查找是否有指向k顶点的弧存在(即下图答案中while循环所做的事情)可见,作为19年的倒数第二道大题,该题的思路和实现方式还是比较简单的。...原创 2020-12-11 17:18:51 · 10678 阅读 · 0 评论 -
以邻接矩阵表示的无向无权图的增加新顶点的算法
邻接矩阵即图的存储结构中的数组表示法(邻接表为链表表示法)。邻接矩阵定义源自严版数据结构教材161页:typedef struct{ VertexType vexs[MAX_VERTEX_NUM];//顶点向量 AdjMatrix arcs;//邻接矩阵(地址) int vexnum,arcnum;//图的当前顶点数和弧数 GraphKind kind;//图的种类和标志}MGraph;对于无向无权图,添加顶点的同时需要做两件事:1.将该顶点加入顶点向量;2.确定该顶点在图中的位置(.原创 2020-12-06 11:31:17 · 3388 阅读 · 3 评论 -
按先序建立二叉树的二叉链表算法
树结点的结构定义:typedef struct BiTNode{ TElemType data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;先序构造链式存储二叉树算法:Status CreateBiTree(BiTree &T){ scanf(&ch); if(ch==‘ ’) T=NULL;//与下面的if判断共同构成递归出口 else{ if(!T=(BiTNode *)malloc(sizeof(BiTNod原创 2020-12-10 17:22:50 · 5674 阅读 · 4 评论 -
以二叉链表表示的二叉树的统计叶子结点个数的递归算法
实现函数:int count=0;int LeafNode(BiTree T){ if(T==NULL) return 0; else count++; LeafNode(T->lchild); LeafNode(T->rchild); return chount;}原创 2020-12-04 10:07:06 · 8808 阅读 · 5 评论 -
写出栈的数据结构定义并利用栈判断给定字符向量是否为回文
栈的数据结构定义://简单版typedef struct{ char data[MaxSize]; int top;}SqStack;//严格按照严版教材版typedef int SElemType;//顺序栈元素类型定义typedef struct {//顺序栈元素结构 SElemType* base; // 栈底指针 SElemType* top; // 栈顶指针 int stacksize;原创 2020-12-03 23:00:30 · 1380 阅读 · 3 评论 -
将链表中所有结点链接方向原地逆转
链表的数据结构定义typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;原地逆转算法实现链表翻转最直接的方法就是:从链表的头部开始遍历每个结点,改变每个结点的指向,即将原本指向下一个结点的指针改为指向上一个结点。唯一比较特殊的是,链表中的首元结点(第一个结点)前面没有结点,所以在改变其指针指向的时候,要将其指针指向 NULL。参考:链表逆置,链表反转,链表翻转(带源码和解析)void Inverse(Lin原创 2020-12-03 21:27:24 · 8915 阅读 · 5 评论