
数据结构
文章平均质量分 76
山上一缕烟
这个作者很懒,什么都没留下…
展开
-
时空复杂度
时空复杂度输入规模不同的人在不同的场合下,对于输入规模(input scale)的理解可以不同。一般而言,输入规模应当能描述输入所需的空间。例如,如果算法要求输入一条数列(数组),则输入规模n应当是数列的长度。时间复杂度时间复杂度(time complexity)是关于输入规模的函数,用于描述算法执行所需要的时间与输入规模的关系。一般地,我们开发一个算法,最终都是要将其应用到输入规模极大的场合中的。比如,我们开发一个排序算法,可能在算法的原型形成之前,大都只考虑对几十个、几百个数排序,但之后我们.原创 2021-01-17 11:28:45 · 319 阅读 · 0 评论 -
【数据结构】【C++】线性栈和链栈
template<class _Ty, size_t _n> class line_stack {private: _Ty* a, * _top;public: //构造函数 line_stack() { a = new _Ty[_n]; _top = a - 1; } //判空 bool empty() const { return _top == a - 1; } //入栈 void push(_Ty&& _value) { ++_top; *_top =原创 2020-06-06 08:51:17 · 187 阅读 · 0 评论 -
【2019/11/3】图的表示方法(邻接矩阵、邻接表、链式前向星)
一、邻接矩阵构造一个二维矩阵M = {mi, j}。如果图是无权图,那么仅需要表示边的邻接关系。这时每个元素mi, j的取值只能是0或1:如果图是有权图,那么还需要表示边权。权值有时候会取0,所以表示方法改成:当用邻接矩阵表示无向图时,需要同时添加有向边<i, j>和<j, i>,得到的邻接矩阵关于主对角线对称。二、邻接表每个节点至少包含当前节点的编号和下一...原创 2019-11-03 13:38:57 · 381 阅读 · 0 评论 -
【数据结构实验】二叉树的[先序遍历、中序遍历、后序遍历](深度优先搜索 · DFS)、层次遍历(广度优先搜索 · BFS)
一、实验内容【问题描述】设计一个能够对链式存储的二叉树进行先序、中序、后序遍历和层次遍历的演示程序。【基本要求】从键盘输入数据,创建一棵二叉树,然后将结果输出。【测试数据】输入的二叉树见教材127页图6.8(b)。二、实验目的1.熟悉掌握二叉树和队列的基本操作。2.培养运用队列解决问题的能力。三、概要设计(文字性地说明解决问题的具体方法和步骤)按先序的方式输入一棵二叉树,u(v,...原创 2019-10-14 21:38:15 · 492 阅读 · 0 评论 -
【数据结构实验】栈与马踏棋盘问题(递归 + 非递归版本)
一、实验内容【问题描述】设计一个国际象棋的马踏遍棋盘的演示程序。【基本要求】将马随机放在国际象棋的8×8棋盘Board[0~7][0~7]的某个方格中,马按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。编制程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入一个8×8的方阵,输出之。【测试数据】自行指定马的初始位置。【实现提示】马在棋盘上走“日...原创 2019-10-13 09:39:18 · 2577 阅读 · 2 评论 -
【数据结构实验】用链表实现两个大整数的相加减
一、实验内容【问题描述】 设计一个实现任意长的整数进行加法运算的演示程序 。【基本要求】 利用双向链表实现长整数的存储,每个结点含一个整形变量。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。【测试数据】(1)0 0;应输出“0”。(2)-2345,6789 -7654,3211;应输出“-1,0000,0000”。(3)-9999,9999 1,0000,00...原创 2019-10-12 17:12:01 · 4817 阅读 · 0 评论 -
【数据结构实验】串的块链存储DEMO
一、实验要求顺序串上的插入和删除操作不方便,需要移动大量的字符。因此,我们可用单链表方式来存储串值。这种存储方式适用于需要进行大量的字符串插入删除操作的场景。构建一个链串,要求至少能完成如下操作:赋值、比较、求串长、联接、取子串、插入(前插、后插)、删除、清除。二、参考代码为了锻炼阅读代码的能力,本文的全部代码都不作详细注释。如果难以看懂,可以在草稿纸上模拟代码的执行过程再进行理解。代...原创 2019-09-17 20:23:37 · 751 阅读 · 0 评论 -
【数据结构实验】手写链式栈、手写链式队列DEMO
为了训练阅读代码的能力,本篇文章的所有代码都不作详细注释。一、链栈实验要求:构造一个链栈,要求至少能完成下列操作:将元素压入栈顶、将栈顶元素弹出、获得栈顶元素、获得栈的大小、清除栈。参考代码及简易注释:1、成员访问运算符.的优先级要比取值符*高,因此在本例中诸如 s.next.next 的写法不会通过编译,应该写成 (*s.next).next 来获取响应的值。#include<c...原创 2019-09-10 21:34:58 · 196 阅读 · 0 评论 -
【数据结构实验】顺序栈、顺序(线性)队列、循环队列DEMO
为了训练阅读代码的能力,本篇文章的所有代码都不作详细注释。一、顺序栈实验要求:构造一个顺序存储的栈,要求至少能够完成如下操作:将元素压入栈顶、将栈顶元素弹出、获取栈顶元素、清除栈。参考代码及简要注释:1、push 和 pop 动作都会返回一个 bool 变量,1 代表操作成功,0 代表操作失败。2、本表通过构造一系列随机数来完成对顺序栈的操作的演示。3、当栈满时再做进栈运算必定产生空...原创 2019-09-10 15:54:02 · 445 阅读 · 0 评论 -
【数据结构实验】线性表DEMO
一、实验要求构造一个线性表,要求能够完成插入、删除操作,可以输出全部项的数据,并可以将两个线性表归并到第三个空表中。二、参考代码本代码通过构造一些随机数输入线性表来完成演示。导入 random 头文件后,构造随机均匀整数分布std::uniform_int_distribution<unsigned int> u(a, b);来获得一个均匀整数分布,范围是离散闭区间 [a,...原创 2019-09-09 17:39:50 · 228 阅读 · 0 评论