![](https://img-blog.csdnimg.cn/2020062716503264.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 81
Data Structure~
张嘉睿大聪明
这个博主很懒,什么都没有留下...
展开
-
W1 LifeGame
Description输入一个初始配置(矩阵大小限制为6*6, 0代表死, 1代表活),输出下一代Input输入活着的节点的坐标(横纵坐标都为-1时代表结束)Output输出下一代#include<iostream>using namespace std;int main(){ int a[8][8]={0}; int b[8][8]={0}; int i,j,x,y,m,n,count; do { cin>>m; cin>>n;原创 2020-06-27 15:13:40 · 241 阅读 · 0 评论 -
W2 CircularQueue
Description向队列中插入若干个元素(循环队列最大容量为8),访问并移除队列中的所有元素Input输入:要插入的元素的个数要插入的每一个元素的值Output输出:访问并移除的每一个元素的值#include<iostream>using namespace std;#include<stdbool.h>typedef struct Queue{ int *p; int front; int rear;} QUEUE;void init(QUE原创 2020-06-27 15:21:20 · 164 阅读 · 0 评论 -
W3 CirLinkList
Description实现一个循环链表,并解决约瑟夫问题.Input输入约瑟夫问题中的n和m;输入要插入循环队列的n个元素的值;Output按顺序输出所有被踢出队列的元素的值;输出最终的优胜者;#include<iostream>using namespace std;typedef struct Node{ int data; struct Node* pNext;} NODE;NODE* create_list(int n){ int i,val;原创 2020-06-27 15:29:00 · 320 阅读 · 0 评论 -
W4 滑雪问题
DescriptionMichael喜欢滑雪这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。一条可滑行的滑坡为24-17-16-1。当然25-24-23-…-3-2-1更长。事实上,这是最长的一条。要求用DFS实现Input输入的第一行表示区域原创 2020-06-27 15:35:40 · 123 阅读 · 0 评论 -
W6 BinarySearch
Description基于有序链表,实现二分查找Input1、依次输入要插入到链表内的数据(输入-1代表结束)2、输入要查询的目标值Output1、有序输出链表内的所有数据2、如果链表内包含要查询的目标值,输出目标值的位置(从0开始);如果不包含,输出Target not present!#include<iostream>using namespace std;typedef struct Node{ int data; struct Node* pNext;}原创 2020-06-27 15:53:50 · 73 阅读 · 0 评论 -
W7 低位优先基数排序(RadixSort)
Description用低位优先基数排序对下列字符串进行排序。Input输入包含两行,第一行为列表中元素个数n,第二行为列表中的元素。本题列表中的元素都是包含三个字母的英文单词。Output1.输出排序后的字符串序列。2.中间用空格隔开。3.末尾不得有空格。#include<iostream>using namespace std;#include<string.h>int getDigit(char x){ int y; return (int)x-原创 2020-06-27 15:57:53 · 273 阅读 · 0 评论 -
W8 MergeSort
Description对下列数字进行归并排序Input输入为两行;第一行为n,表示需要排序的元素的个数;第二行为需要排序的元素,中间用空格隔开。Output输出排好序的数字序列;两个元素之间用空格隔开;行末不得有空格。#include<iostream>using namespace std;void Merge(int a[],int L,int M,int R){ int left[100],right[100]; int i,j,k; int left_s原创 2020-06-27 16:01:02 · 136 阅读 · 0 评论 -
W9 QuickSort
Description对下列数字进行快速排序。Input输入为两行;第一行为n,表示需要排序的元素的个数;第二行为需要排序的元素,中间用空格隔开。Output输出排好序的数字序列;两个元素之间用空格隔开;行末不得有空格。#include<iostream>using namespace std;void QuickSort(int a[],int left,int right){ int i,j,mid,t,p; mid=(left+right)/2; i=le原创 2020-06-27 16:03:58 · 114 阅读 · 0 评论 -
W10 TwoSum问题(Hash Map)
Description给一个整数数组,找到两个数使得他们的和等于一个给定的数target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。数组是给定的,允许对数组建索引,每次的问题输入是target。要求:需使用标准模板库STL类函数实现HashMap。Input控制台输入三行,第一行表示数组的大小,第二行顺序输入整数,第三行输入目标值。Output输出查询到的下标,注意:(1)输出的两个下标是从1开始计数原创 2020-06-27 16:10:20 · 139 阅读 · 0 评论 -
W11 BinaryTree
Description1、给出后序遍历序列###ca##ji####spom(#代表空指针), 构建二叉树。2、上述二叉树实际是一颗二叉排序树,请实现程序(1)查找c节点,输出从树根到c节点的路径。(2)删除其中的m节点,使得删除后仍为二叉排序树,并输出其中序遍历序列。Input输入后序遍历序列;输入要查找的节点值;输入要删除的节点值。Output输出构建好的二叉树的中序遍历序列(末尾有空格);输出从树根到要查找节点的路径(末尾有空格);输出删除节点后的二叉树的中序遍历序列(末尾有空原创 2020-06-27 16:14:09 · 156 阅读 · 0 评论 -
W12 HeapSort(堆排序)
Description给出n个坐标点<x1,y1>, <x2, y2>……<xn, yn>,请对他们进行堆排序。坐标点的大小关系是:如果 xi> xj, 则 <xi,yi> 大于 <xj, yj>;若 xi=xj 且 yi >yj, 那么同样有<xi,yi> 大于 <xj, yj>。请使用堆排序完成,建议使用C++的面向对象的程序设计。Input输入部分包括几个部分:第一行,一个整型数,表示输入的坐原创 2020-06-27 16:20:16 · 157 阅读 · 0 评论 -
W13 堆排序的应用----TopK
Description有一堆二维坐标点<x1,y1>, <x2, y2>……<xn, yn>。假定坐标点是一个一个来的,请利用堆,能时刻报告数据中的最小的k项。比如k=1, 有4个坐标数据 <2,2>, <1,1>, ❤️,3>, <0,0> 依次到来。那么当来第一个<2,2>时, top-1的值是<2,2>, 再来一个数据<1,1>,这时top-1的值变为了 <1,1>, 再来原创 2020-06-27 16:23:54 · 161 阅读 · 0 评论 -
W14 BinaryTree(层序生成算法)
Description1、给出层序遍历序列abc##de(#代表空指针), 构建二叉树。2、实现一个函数,检查二叉树是否平衡。平衡树的定义:任意一个节点,其两棵子树的高度差不超过1。3、找出二叉树中某两个节点的最近公共祖先。最近公共祖先的定义:对于有跟树T的两个节点p,q,最近公共祖先表示为一个结点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。说明:所有节点的值都是唯一的,p,q为不同节点且均存在于给定的二叉树中。Input1、层序遍历序列2、二叉树中两个节点p和原创 2020-06-27 16:27:53 · 179 阅读 · 0 评论 -
W15 最小生成树(Prim)
Description输入一个带权连通图,输出最小生成树Input输入包含如下内容:第一行两个整型数N和M,分别表示结点的个数以及带权边的个数第二行输入N个数,分别表示N个结点第三行开始,一共输入M行,每行有三个整型数,分别表示边的两端结点以及权值;Output输出包含两个部分:1、输出若干行,每行输出三个数 a,b,c(相邻两数中间空一个空格),分别表示最小生成树中边的两端结点以及权值,需要注意的是:(1)请按照权值的顺序按行依次输出;(2)每行前两个值a和b(边的两端结点)要满足a原创 2020-06-27 16:32:45 · 169 阅读 · 0 评论 -
W16 拓扑排序
邻接表#include<iostream>using namespace std;#define ERROR -1typedef struct ENode{ int V1,V2; int Weight;} Edge;//邻接点的定义 typedef struct AdjVNode{ int AdjV; //邻接点下标 int Weight; struct AdjVNode* Next;} PtrAdjV;//顶点表头结点的定义 typedef struc原创 2020-06-27 16:37:26 · 196 阅读 · 0 评论 -
W17 图的遍历
邻接表+DFS邻接矩阵+BFSint Visited[100]={0};typedef struct ENode{ int V1,V2; int Weight;} Edge;//邻接点的定义 typedef struct AdjVNode{ int AdjV; //邻接点下标 int Weight; struct AdjVNode* Next;} PtrAdjV;//顶点表头结点的定义 typ...原创 2020-06-27 16:39:27 · 235 阅读 · 0 评论 -
W5 OrderedList
Description1、用数组(大小限定为30)实现一个链表类,基于链表类派生一个有序链表类(重写插入和替换函数)。2、自定义一个数据结构Record作为有序链表类的数据类型,重载操作符>, <, ==。Input依次输入要插入到链表内的数据(输入-1代表结束)Output有序输出链表内的所有数据Input3 6 9 8 10 7 5 4 2 1 -1Output1 2 3 4 5 6 7 8 9 10...原创 2020-06-28 10:31:57 · 130 阅读 · 0 评论 -
W18 插入排序
#include<iostream>#include<cstdlib> using namespace std; //交换数组元素位置位置void swap(int &a, int &b){ int temp = a; a = b; b = temp;} /*插入排序。注意,若后面一个元素比其前面一个元素小,则将这两个元素交换位置,然后再来比较这个插入元素与前面一个元素的大小,若小,则还需要交换这两个元素位置,一直到这个插入元素在正确的原创 2020-09-18 10:12:01 · 817 阅读 · 0 评论