
数据结构与算法
上机代码理解
空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 · 1069 阅读 · 0 评论 -
数据结构课后练习
1、 已知二叉树的先根序列是AEFBGCDHIKJ,中根序列是EFAGBCHKIJD,画出此二叉树,并画出后序线索二叉树。2、画出下图所表示的二叉树的中序线索二叉树和先序线索二叉树。原创 2021-06-27 15:47:19 · 1371 阅读 · 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 · 381 阅读 · 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 · 568 阅读 · 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 · 884 阅读 · 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 · 340 阅读 · 0 评论 -
链表合并+复制
#include <stdio.h>#define maxlength 50typedef 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 · 316 阅读 · 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 · 300 阅读 · 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 · 1012 阅读 · 2 评论 -
上机6_图
题目已知一个无向图如下图所示,试给出该图的邻接矩阵和邻接表存储示意图(画图,分别用矩阵和数组链表图表示),并编程分别实现该图的邻接矩阵表示和邻接表显示表示,要求编写两种表示方式的存储结构和相关基本操作,并在主函数创造此图代码#include <iostream>#define maxValue max#define E 50#define V 20using namespace std;typedef struct{ char vexlist[V];//顶点集 int原创 2021-06-07 10:50:37 · 1057 阅读 · 0 评论 -
上机5_树
题目编写一个函数,在最大堆中查找任意元素,并分析其时间复杂度。要求:1、 定义最大堆的型HEAP及其基本操作。2、 定义函数int Find(HEAP H, Elementtype e),查找e是否为堆的元素,如果是,返回该元素在堆中的位置,如果不是,返回0。(提示:利用最大堆的元素特点进行查找,可降低复杂度)在主函数中首先构建一个二叉树,然后验证所构造的函数。代码#include<iostream>#define MaxSize 200using namespace st原创 2021-05-31 11:06:23 · 643 阅读 · 0 评论