=========基本数据结构==========
文章平均质量分 82
MiaoPlus
不要假装自己很努力,因为结果不会陪你演戏
展开
-
数组仿真链表的优化
数组仿真链表的优化在最初数组仿真链表的优化中,每次加入一个新值都要在数组当中寻找一个空位来储存数据,这样会有一个问题,就是当链表中加入n个元素时,每一次都会用线性的时间复杂度去寻找空位,造成了很大时间上的浪费,因此需要进行优化。用一个堆栈记录所有没有被加入到链表中的数组元素下标,栈的元素可以初始化为1...MAXN-1,以方便使用。每次对链表进行删除操作时,再将删除的数组元素所对应的数组下标入栈,...原创 2018-03-15 10:48:57 · 207 阅读 · 0 评论 -
Hdu.1711.Number Sequence
Hdu.1711.Number Sequence Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...... , b[M] (1 <= M <= 10000, 1 <= N <= 1000000). Your task is to find a number K wh...原创 2018-03-17 12:23:33 · 516 阅读 · 0 评论 -
字典树
Trie,又称字典树,是一种用于实现字符串快速检索的多叉树结构。Trie的每个节点都拥有若干个字符指针,若在插入或检索到一个字符串时扫描到一个字符c,就沿着当前节点的c这个字符指针,走向该指针指向的节点。下面我们来详细讨论Trie的基本操作过程。初始化一棵空Trie仅包含一个根节点,该点的字符指针均指向空。插入当需要插入一个字符串S时,我们令一个指针P起初指向根节点。然后,一次扫描S中的每个字符c...原创 2018-05-05 14:49:56 · 545 阅读 · 0 评论 -
Hdu.1251.统计难题(字典树)
B - 统计难题Time Limit: 2000 MS Memory Limit: 65535 KB64-bit integer IO format: %I64d , %I64u Java class name: Main[Submit] [Status]DescriptionIgnatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字...原创 2018-05-05 15:09:25 · 162 阅读 · 0 评论 -
湖南大学2018年第十四届程序设计竞赛重现赛.Hello I am HERE!(高精度计算)
链接:https://www.nowcoder.com/acm/contest/125/C来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld题目描述There are many difficulties in today's contest, but this is definitely not ...原创 2018-05-27 22:42:31 · 856 阅读 · 1 评论 -
ACM-高精度模板(综合篇)
转载地址:https://blog.csdn.net/u013615904/article/details/43373601在这里,我们约定,能用int表示的数据视为单精度,否则为高精度。所有函数的设计均采用带返回值的形式。本文包含1.高精度加法2.高精度减法3.高精度乘法1)高精度乘高精度的朴素算法2)高精度乘高精度FFT优化算法3)高精度乘单精度4.高精度除法1)高精度除高精度2)高精度除单精...转载 2018-04-07 12:48:12 · 297 阅读 · 0 评论 -
中石油.5502.打地鼠游戏(优先队列)
5502: 打地鼠游戏时间限制: 1 Sec 内存限制: 128 MB提交: 526 解决: 129[提交] [状态] [讨论版] [命题人:admin]题目描述伟大的2320学长特别喜欢打地鼠游戏,这个游戏开始后,会在地板上冒出一些地鼠来,你可以用榔头去敲击这些地鼠,每个地鼠被敲击后,将会增加相应的游戏分值。可是,所有地鼠只会在地上出现一段时间(而且消失后再也不会出现),每个...原创 2018-07-26 22:32:19 · 380 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第三场).E. Sort String(KMP)
链接:https://www.nowcoder.com/acm/contest/141/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288KSpecial Judge, 64bit IO Format: %lld题目描述Eddy likes to play with string which is a sequen...原创 2018-07-27 09:50:22 · 280 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第三场).C. Shuffle Cards
链接:https://www.nowcoder.com/acm/contest/141/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288KSpecial Judge, 64bit IO Format: %lld题目描述Eddy likes to play cards game since there are...原创 2018-07-27 10:25:57 · 281 阅读 · 0 评论 -
Hash表
Hash表Hash表又称散列表,一般由Hash函数(散列函数)与链表结构共同实现。与离散化思想类似,当我们对若干复杂信息进行统计时,可以用Hash函数把这些复杂信息映射到一个容易维护的值域内。因为值域变简单、范围变小,有可能造成两个不同的原始信息被Hash函数映射为相同的值,所以我们需要处理这种冲突情况。有一种称为"开散列"的解决方法是,建立一个临界表结构,以Hash函数的值域作为表头数组head...原创 2018-05-05 20:58:09 · 183 阅读 · 0 评论 -
数组仿真队列
队列简称队,它也是一种运算受限的线性表,其限制仅允许在表的一端进行插入,而在表的另一端进行删除。我们把进行插入的一端称作队尾(rear),进行删除的一端称作队首。向队列中插入新元素称为进队或入队,新元素进队后成为新的队尾元素;从队列中删除元素称为离队或出队,元素离队后,其后继元素就成为队首元素。由于队列的插入和删除操作分别是在各自的一端进行的,每个元素必然按照进入的次序离队。所以又把队列称为先进先...原创 2018-03-15 21:30:19 · 176 阅读 · 0 评论 -
数组循环队列
如果数组仿真队列进行插入一次删除一次的操作,只要2*n次数组就会被用光,当数组仿真队列的元素出队后,队的首部回空出许多位置,而队尾指针指向队列中最后一个元素位置,空出的位置将无法再被利用,导致队列空间的浪费,并且在新的数据元素入队时,会造成“假溢出”。解决的方法是将线性数组模拟成环形。可以看出:队满条件是:rear=front。队空条件是rear=front。所以这种方法无法判断究竟是队满还是队空...原创 2018-03-16 17:51:29 · 374 阅读 · 0 评论 -
指针仿真链表
使用指针模拟链表数据结构#include<iostream>using namespace std;struct node{ int data; node *next;};node *head = {NULL};void del_by_data(int del_data) //从链表头向后查找,找到del_data并删除{ node *p=...原创 2018-03-15 11:24:42 · 309 阅读 · 0 评论 -
数组仿真链表
实际上,可以用数组仿真链表的各项功能,当然数组仿真链表不具备动态开辟内存空间的特点。参考代码如下://数组仿真链表#include<iostream>#define MAXN 100001 //链表中最多容纳的元素数+1using namespace std;int linklst_data[MAXN]; /...原创 2018-03-16 11:41:04 · 325 阅读 · 0 评论 -
简单静态链表
下面的代码是一个简单的静态链表,它是由3个学生的数据组成的(学号,成绩)的结点组成。#include<iostream>#include<stdio.h>using namespace std;struct student{ long num; float score; struct student * next; //该...原创 2018-03-14 12:34:02 · 320 阅读 · 0 评论 -
动态链表
一个完善的动态链表程序应该具有以下基本功能:建立链表、插入结点、删除结点、打印链表、释放链表等。扩展的动态链表程序还可能有获得链表长度、获得当前结点、查找结点位置、连接两个链表、比较两个链表等功能。下面将逐个实现其功能代码。#include<iostream>#include<stdlib.h>#include<stdio.h>using namespac...原创 2018-03-14 14:32:02 · 236 阅读 · 0 评论 -
链表与邻接表
链表数组是一种支持随机访问,但不支持在任意位置插入或删除元素的数据结构。与之相对应,链表支持在任意位置插入或删除,但只能按顺序依次访问其中的元素。我们可以用一个struct 表示链表节点,其中可以存储任意数据;另外用prev和next两个指针指向前后相邻的两个节点,构成一个常见的双向链表结构。为了避免在左右两端或空链表中访问越界,我们建立两个额外的节点head与tail代表链表头尾,把实际数据节点...原创 2018-05-10 19:16:02 · 779 阅读 · 0 评论 -
数组仿真堆栈
不仅用链表可以仿真堆栈,还可以用数组仿真堆栈。堆栈数组声明如下:int stack[MaxSize];int top=-1;其中MaxSize是该堆栈的最大容量,top表示当前堆栈顶端的索引值,初始值设为-1表示堆栈为空。数组仿真堆栈代码实现#include<bits/stdc++.h>#define MAXN 1000 //栈能容纳的最多元素个数using nam...原创 2018-03-15 21:36:26 · 338 阅读 · 0 评论 -
栈的基本操作
堆栈(简称栈)是一种最常用和最重要的数据结构,是一种只能在一端进行插入或删除数据操作的线性表。表中允许进行插入、删除操作的一端称为栈顶。栈顶当前位置是动态的,栈顶当前位置由一个称为栈顶指针的位置指示器表示。表的另一端称为栈底。当栈中没有数据元素时,称为空栈。栈的插入操作通常称为进栈或入栈。栈的删除操作通常称为退栈或出栈。栈的主要特点是“后进先出”,及后入栈的元素先弹出。每次进栈的数据元素都放在原当...原创 2018-03-15 13:47:43 · 694 阅读 · 2 评论 -
链表仿真队列
我们可以使用链表的方式仿真队列,参考程序如下。//链表仿真队列#include<iostream>#include<stdlib.h>using namespace std;typedef struct QueueNode node;typedef struct QueueNode *link;struct QueueNode{ int data;...原创 2018-03-16 17:57:50 · 174 阅读 · 0 评论 -
CCF.2013 12-3.最大的矩形(单调栈)
问题描述试题编号: 201312-3 试题名称: 最大的矩形 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。 ...原创 2018-08-01 09:53:47 · 3114 阅读 · 3 评论