
数据结构
Luncles
别再熬夜!
展开
-
B/B+树的使用
原创 2023-07-12 20:45:48 · 220 阅读 · 0 评论 -
C++中的insert()与迭代器
这段时间断断续续地重读C++ Primer,发现了一个比较有趣的点,309页的练习9.22这道题: 此题共有两个错误,一个是while陷入了死循环,因为insert()函数返回的是插入点之前的迭代器,因此while循环的条件永远为真,这是比较明显的;另一个错误是mid这个迭代器会失效,这是比较值得研究的点,对此github上Cpp-Primer项目的几个contributor也展开了讨论,现将其总结为本文。如同书里315页的9.3.6所说...原创 2021-11-05 17:51:10 · 1373 阅读 · 0 评论 -
C++ Primer——decltype类型指示符
decltype是C++11引入的类型说明符,作用是选择并返回操作数的数据类型decltype(f()) sum = x; //sum的类型就是函数f的返回类型编译器并不实际调用函数,而是使用当调用发生时f的返回值类型作为sum的类型。const int ci = 0, &cj = ci;decltype(ci) x = 0; //x的类型是const intdecltype(cj) y = x; //y的类型是const int&,y绑定到...原创 2021-04-26 02:16:06 · 227 阅读 · 0 评论 -
西工大17年计算机机试真题
前言:西工大机试真题记录 代码在CodeBlocks16.01环境下编译通过第一题-输入两组时间(h,m,s),计算平均时间,两组时间不超过一个小时,h在0-11之间/* *题目:输入两组时间(h,m,s),计算平均时间,两组时间不超过一个小时,h在0-11之间 *Input: 1 20 30 1 30 30 0 20 30 11 30 30 *Output: 1 25 30 11 55 30 */...原创 2021-03-18 03:35:41 · 424 阅读 · 0 评论 -
西工大18年计算机机试真题
前言:西工大机试真题记录 代码在CodeBlocks16.01环境下编译通过第一题-求积:给定n组数,每组两个整数,输出这两个整数的乘积/* *题目:求积:给定n组数,每组两个整数,输出这两个整数的乘积 *Input: 2 1 1 2 3 *Output: 1 6 */#include <iostream>using namespace std;int NoO...原创 2021-03-16 14:23:16 · 337 阅读 · 0 评论 -
西工大19年计算机机试真题
前言:西工大机试真题记录 代码在CodeBlocks16.01环境下编译通过第一题-整数排序(快速排序)/* *题目:一组整数,由小到大排序,有n组测试数据,排序输出 *输入样例: 2 1 5 8 6 3 2 0 4 2 3 8 15 63 20 1 *输出: 0 1 2 3 5 6 8 1 2 3 4 8 15 20 63 */#include <...原创 2021-03-14 18:55:01 · 553 阅读 · 0 评论 -
西工大noj(38~40)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过38题-逆序整数/* *题目:用递归法将一个长整型数n逆序输出,例如输入483,输出384,n的位数不确定,可以是有效范围内的任意位数 */#include <iostream>using namespace std;int rever(long int n){ cout << n % 10; n /= 10; if (n !=...原创 2021-03-11 13:56:44 · 1320 阅读 · 0 评论 -
西工大noj(37)
37题-重温A+B(这道题对我最大的价值就是复习了对输入非法和输出溢出的判断以及相应的处理)/* *题目:A和B都是由3个整数组成,分别表示时、分、秒,比如,假设A为34 45 56,就表示A所表示的时间是34小时45分钟56秒 输入数据每行有6个整数AH,AM,AS,BH,BM,BS,分别表示时间A和B所对应的时分秒 输出A+B,每个输出结果也是由时分秒3部分组成,同时分和秒的取值范围为0~59,每个输出占一行,并且所有的部分都可以用32位整数表示 */#in原创 2021-03-10 02:34:21 · 465 阅读 · 0 评论 -
西工大noj(34~36)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过34题- 发工资的日子/* *题目:如果每个员工工资都知道,那么最少需要准备多少人民币,才能给每位员工发工资的时候不用员工找零呢? 假设员工的工资都是正整数,单位元,人民币一共有100元,50元,10元,5元,2元和1元六种 */#include <bits/stdc++.h>using namespace std;int noj_034(){ ...原创 2021-03-07 00:57:19 · 1059 阅读 · 0 评论 -
西工大noj(31~33)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过31题-计算方差(题目要求不能用数组,所以此处用的是公式的拆项)/* *题目:编写函数计算 s=(x1-x)^2+(x2-x)^2+……+(xn-x)^2,其中x为x1,x2……的平均数,不能用数组(保留6位小数) *备注:题目要求不能用数组存储xi的值,所以此处把公式拆开,例如: s=(x1-x)^2+(x2-x)^2=(x1^2+x2^2)+2*x^2-2*x*(x1+x2)=s...原创 2021-03-06 02:11:00 · 1056 阅读 · 0 评论 -
西工大noj(27~30)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过27题-不重复数字组合排列(采用了和23题差不多的方法)/* *题目:用1~9组成3个3位数,abc,def和ghi,每个数字恰好使用了1次,要求adc:def:ghi=1:2:3,输出所有解 */#include <iostream>#include <vector>using namespace std;int noj_027(){ in...原创 2021-03-04 01:19:47 · 1203 阅读 · 1 评论 -
西工大noj(25,26)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过25题-羊羊的聚会/* *题目:见上图 */#include <iostream>using namespace std;int noj_025(){ int myyPosi, fyyPosi, myySpeed, fyySpeed, len, hour = 1; cout << "请依次输入美羊羊坐标,沸羊羊坐标,美羊羊速度,...原创 2021-03-03 03:34:54 · 1351 阅读 · 0 评论 -
西工大noj(23~24)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过23题-不重复数字除法(有点繁琐,暂时只想到了暴力法,在判断各位数字是否重复采用了桶排序的思想):/* *题目:输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好是0~9的排列,2<=n<=79 */#include <iostream>#include <vector>using namespace s...原创 2021-03-02 01:36:21 · 1007 阅读 · 0 评论 -
西工大noj(21,22)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过21题:/* *题目:有a和b两种粒子,每秒钟内一个a粒子可以裂变为3个b粒子,而一个b粒子可以裂变为1个a粒子和2个b粒子,若在t=0时刻中只有一个a粒子,求在t秒时产生的a粒子和b粒子数,输入t */#include <iostream>using namespace std;int noj_021(){ int time; int aPart ...原创 2021-02-28 02:51:46 · 1005 阅读 · 0 评论 -
西工大noj(11~20)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过11题:/* *题目:用二分法求方程在(-10,10)之间的根(保留2位小数) */#include <iostream>#include <stdio.h>using namespace std;int noj_011(){ double x, left = -10, right = 10; x = (left + right) / 2;...原创 2021-02-26 01:35:54 · 1500 阅读 · 0 评论 -
用链表实现多项式的加法和乘法计算(来自浙江大学陈越老师和何钦铭老师的数据结构网课)
#include "stdafx.h"#include "stdlib.h"typedef struct PolyNode *Polynomial;struct PolyNode{ /*构造一个链表,包括多项式某一项的系数coef和指数expon,以及下一项的地址link*/ int coef; int expon; Polynomial link;};...原创 2019-01-27 23:01:25 · 594 阅读 · 0 评论 -
二叉树的遍历:先序中序后序遍历的递归与非递归实现及层序遍历
对于一种数据结构而言,遍历是常见操作。二叉树是一种基本的数据结构,是一种每个节点的儿子数目都不多于2的树。二叉树的节点声明如下:typedef struct TreeNode *PtrToNode;typedef struct TreeNode *BinTree; struct TreeNode{ int Data; //为简单起见,不妨假设树节点的元素为int型 ...转载 2019-01-28 22:46:30 · 311 阅读 · 0 评论 -
判断一棵树是不是完全二叉树
还有一种特殊的完全二叉树就是叶子节点都在同一层的,如下图完全二叉树定义,若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。思路是:用bfs,一层一层的遍历二叉树的节点,一但遍历到空节点,那么不在往队列里加入节点了,遍历队列里的已有元素,若有一个不是空节点,那么就不是完全二叉树,若全是空节...转载 2019-05-31 01:46:23 · 1370 阅读 · 0 评论 -
单链表逆序操作学习
前言将单链表逆序,方法有三种:遍历链表,将每个节点的内容存入一个数组中,然后逆序输出数组,并重新构造一个链表 使用栈来逆序输出,原理与1相似,出栈的时候也需要重新构造一个新链表 直接将链表逆序然后输出 其中,前面2种方法原理相似,也比较好理解,但是这样会耗费额外的内存空间;第三种方法则不需要额外的内存空间,便可实现单链表的逆序。本文主要记录对第三种方法的操作原理。原理第三种...转载 2019-05-31 02:42:37 · 1672 阅读 · 0 评论 -
单链表逆序操作学习
前言将单链表逆序,方法有三种:遍历链表,将每个节点的内容存入一个数组中,然后逆序输出数组,并重新构造一个链表 使用栈来逆序输出,原理与1相似,出栈的时候也需要重新构造一个新链表 直接将链表逆序然后输出 其中,前面2种方法原理相似,也比较好理解,但是这样会耗费额外的内存空间;第三种方法则不需要额外的内存空间,便可实现单链表的逆序。本文主要记录对第三种方法的操作原理。原理第三种...转载 2019-05-31 02:47:20 · 1303 阅读 · 0 评论 -
用广度优先搜索方法解决放置炸弹游戏
炸弹游戏规则:在一个n*n的方阵里,每一个方格分别代表空地,敌人,墙,三种元素的分布为随机分布,现在玩家要从地图的某一个空地(已知坐标点)出发,走到一个空地上放置炸弹,炸弹可以炸毁该点对应行列上的所有敌人,但是炸弹不能炸穿墙,要求的是玩家在哪一个点放置炸弹能够炸掉最多敌人,最多炸几个?(注意:必须考虑玩家从出发点到放置炸弹点之间的可通过路径,即玩家只能通过空地走到放置炸弹点,且不能走墙外。)/*在...原创 2018-04-19 20:03:53 · 425 阅读 · 0 评论