数据结构与算法
上机代码理解
空LA
Truth repeats its course
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法期末复习总结
题型 编程题2题,综合题5题 编程题 1、链表的遍历,对单链表进行基本操作。 2、二叉树的遍历,判断两个二叉树是否等价。 3、哈夫曼树的构造原理以及构造过程,带权路径长度。 4、计算图中顶点间最短路径(单源最短路径以及任意顶点之间的最短路径)和最短距离的基本思想。如何计算图的偏心度和中心点。 综合题 1、给定树的两种遍历序列,如何确定树。 2、堆的定义以及相关的基本操作。 3、KMP算法中如何计算模式串中的next数组,以及KMP模式匹配的具体步骤 4、最小生成树(两种方法)的基本原理以及生成过程。 5、图原创 2021-07-04 16:58:34 · 1115 阅读 · 0 评论 -
数据结构课后练习
1、 已知二叉树的先根序列是AEFBGCDHIKJ,中根序列是EFAGBCHKIJD,画出此二叉树,并画出后序线索二叉树。 2、画出下图所表示的二叉树的中序线索二叉树和先序线索二叉树。原创 2021-06-27 15:47:19 · 1431 阅读 · 0 评论 -
上机4_树
题目 已知非空二叉树T,写一个算法,求度为2的结点的个数。 要求: 1、定义二叉树的抽象数据类型和型BTREE,并定义基本操作。 2、编写函数count2(BTREE T),返回度为2的节点的个数。 3、在主函数中,构建一个二叉树,并验证所编写的算法。 代码 #include <iostream> using namespace std; struct node { int data; node* left; node* right; }; typedef node* BTREE;原创 2021-06-22 21:06:42 · 416 阅读 · 0 评论 -
上机3_线性表(2)
题目 设有一个带头结点的双向链表h,设计一个算法用于查找第一个元素之为x的结点,并将其与其前驱结点进行交换。 要求: 1、定义带头结点的双向链表的型DLIST。 2、定义双向链表DLIST的基本操作。 3、定义函数int swap(elementtype x, DLIST &h),查找第一个元素之为x的结点,如果在链表中存在元素值为x的结点,并其与其前驱结点进行交换,并返回1,否则返回0。 4、在主函数中测试所编写函数的正确性。 代码 #include <iostream> using原创 2021-06-22 21:04:55 · 604 阅读 · 0 评论 -
上机2_线性表
题目 试编写一个整数进制转换的通用函数convert(int num, STACK S, int n),要求将整数m转换为n进制数,n进制数的各位依次存放在栈S中。并在主函数中进行测试。 要求:1、定义栈以及栈的型。 2、定义栈的各种操作。 3、实现函数convert。 4、在main函数中,通过调用函数convert将num的n进制数存放到一个栈中,并通过出栈的方法输出该n进制数 实现代码 #define ElemType char #define MAX 100 #include <iostrea原创 2021-06-22 21:01:49 · 926 阅读 · 0 评论 -
上机1_链表
题目 写一个算法合并两个已排序的线性表。(使用指针表示的线性表(单链表)来实现) 要求:1、定义线性表节点的结构,并定义节点的型和位置的型。 2、定义线性表的基本操作 3、在1,2的基础上,完成本题。 4、在main函数中进行测试:先构建两个有序的线性表,然后合并这两个线性表。 参考输入: 线性表A:(3,8,15,27,49) 线性表B:(6,9,13,23,57,89,97) 参考输出: 线性表C:(3,6,8,9,13,15,23,27,49,57,89,97) 实现代码 #include <i原创 2021-06-22 21:00:06 · 380 阅读 · 0 评论 -
链表合并+复制
#include <stdio.h> #define maxlength 50 typedef struct { int elements[maxlength]; int last; } LIST; typedef int position; void Insert(int x,position p,LIST &L) { position q; if(L.last>=maxlength-1) printf("list is full"); else if((p>原创 2021-06-22 10:35:15 · 349 阅读 · 0 评论 -
上机8_查找
题目 假设一棵平衡二叉树的每个结点都标明了平衡因子b,试设计一个算法,利用平衡因子求平衡二叉树的高度。 实现代码 #include<iostream> using namespace std; typedef struct node{ int data; int b; node *lchild,*rchild; }; typedef node * AVLBtree; int high = 0; int depth(AVLBtree T) { if(T=原创 2021-06-16 23:57:02 · 329 阅读 · 1 评论 -
上机7_图
题目 已知一个图的顶点集V和边集G分别为V={0, 1, 2, 3, 4, 5, 6, 7, 8},E={<0, 1>, <0, 2>, <1, 3>, <1, 4>, <2, 4>, <2, 5>, < 3, 6>, < 3, 7>, <4, 7>, <4, 8>, <5, 7>, < 6, 7>, <7, 8>},若采用邻接表存储,并且每个顶点邻接原创 2021-06-07 23:50:10 · 1069 阅读 · 2 评论 -
上机6_图
题目 已知一个无向图如下图所示,试给出该图的邻接矩阵和邻接表存储示意图(画图,分别用矩阵和数组链表图表示),并编程分别实现该图的邻接矩阵表示和邻接表显示表示,要求编写两种表示方式的存储结构和相关基本操作,并在主函数创造此图 代码 #include <iostream> #define maxValue max #define E 50 #define V 20 using namespace std; typedef struct{ char vexlist[V];//顶点集 int原创 2021-06-07 10:50:37 · 1098 阅读 · 0 评论 -
上机5_树
题目 编写一个函数,在最大堆中查找任意元素,并分析其时间复杂度。 要求: 1、 定义最大堆的型HEAP及其基本操作。 2、 定义函数int Find(HEAP H, Elementtype e),查找e是否为堆的元素,如果是,返回该元素在堆中的位置,如果不是,返回0。(提示:利用最大堆的元素特点进行查找,可降低复杂度) 在主函数中首先构建一个二叉树,然后验证所构造的函数。 代码 #include<iostream> #define MaxSize 200 using namespace st原创 2021-05-31 11:06:23 · 680 阅读 · 0 评论
分享