栈的数组模拟(非STL)】的更多相关文章

栈遵循先进后出的原则 括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 现在,有一行括号序列,请你检查这行括号是否配对.   输入 第一行输入一个数N(0<N<=100),表示有N组测试数据.后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组.数据保证S中只含有"[","]","(",")"四种字符 输…
#include<bits/stdc++.h> using namespace std; struct zhan{ int s[10000]; int top=0; void zhanpop(){//将栈顶弹出 top--; } void zhanpush(int n){//将数据读入栈 top++; a[top]=n; } int zhanempty(){//检查栈是否为空 return top==0; } void chushihua(){//初始化栈 top=0; } int ding(…
书上实现: 二叉搜索数的特点:高效实现 插入一个数值,查询是否包含某个数值,删除某一个数值. 所有的节点都满足左子树上的所有节点都比自己的小,而右子树上的所有节点都比自己大的特点. 查询:如果当前数值等于根节点返回true,比根节点小,就往左儿子走,否则往右儿子走. 插入:按照查找数值的方法去找其所在位置,从根节点出发,往左右儿子中找到合适位置. 删除:需要删除的节点没有左儿子,那么就把右儿子提上去. 需要删除的节点的左儿子没有右儿子,那么就把左儿子提上去 以上两种情况都不符合的话,就把左儿子的…
我们在理解stack和queue的基础上可以用数组来代替这两个容器,因为STL中的stack和queue有可能会导致程序运行起来非常的慢,爆TLE,所以我们使用数组来模拟他们,不仅可以更快,还可以让代码更加简洁 1.数组模拟stack #include <iostream> #include <cstdio> #include <cstring> #include <string.h> #include <math.h> #include <…
栈的概念 先进后出策略(LIFO) 是一种基本数据结构 栈的分类有两种:1.静态栈(数组实现) 2.动态栈(链表实现) 栈的模型图如下: 需求分析 在编写代码之前,我习惯先对要实现的程序进行需求分析,比如用什么数据结构存储数据,需要实现哪些基本的功能等.这次是通过数组模拟实现栈,所以是一个静态栈,但是我在栈满时通过arraycopy函数自动扩容,后面会细说. 我们要实现的功能至少应该包含以下功能: public class Stack { private int[] array;//模拟栈 pr…
其实这篇文章开出来主要是水文章%% %% 栈--后进先出的婊 特点:只能在某一端插入和删除的特殊的线性表 操作:进栈--PUSH->向栈顶插入元素 出栈--POP-->将栈顶元素删除 实现: 定义一个长为n的数组,用一个top(相当于指针)指向栈顶,若top=0,则表示栈空:top=n,则表示栈满. 进栈时top+1,出栈时top-1. 栈指针(top)在运算中永远都指向栈顶 若top>n(n为栈的长度),则为溢出,做出错处理:若top<0,则为下溢,同样做出错处理  [具体讲就是…
**栈是一种操作受限制的线性表,太多官方的话我也不说了,我们都知道栈元素是先进后出的,它有两种存储结构,分别是顺序存储结构和链式存储结构. **今天我先记一下顺序存储结构,后面我会加上链式存储结构的. **我看到别人的顺序栈都是用别的方式来写的,我现在这里用的是一维数组,也就是用数组模拟.由于要用到bool型,所以我直接用c++来写,大家可以相应改成C语言的版本,并不难. **顺序栈的操作 无非是基本的八个,分别是初始化,出栈,入栈,是否为空,是否为满,取栈顶元素,取有效元素个数,遍历. **如…
**栈是一种操作受限制的线性表,太多官方的话我也不说了,我们都知道栈元素是先进后出的,它有两种存储结构,分别是顺序存储结构和链式存储结构. **今天我先记一下顺序存储结构,后面我会加上链式存储结构的. **我看到别人的顺序栈都是用别的方式来写的,我现在这里用的是一维数组,也就是用数组模拟.由于要用到bool型,所以我直接用c++来写,大家可以相应改成C语言的版本,并不难. **顺序栈的操作 无非是基本的八个,分别是初始化,出栈,入栈,是否为空,是否为满,取栈顶元素,取有效元素个数,遍历. **如…
1,数组指针,current表示当前指针,输出其指向的元素:next表示指针移动到下一个元素:prev指针移动到上一个元素:end表示指针移动到最后一个元素:reset表示指针移动到第一个元素: <?php $people = array("Bill", "Steve", "Mark", "David"); echo current($people) . "<br>"; // 当前元素是…
用数组模拟栈的实现: #include <stdio.h> #include <stdlib.h> #define STACK_SIZE 100 typedef struct Stack { int top; int stack[STACK_SIZE]; }Stack; void InitStack(Stack *s) { s->top=-; } int IsEmpty(Stack *s) { ? :; } int IsFull(Stack *s) { ) ; ; } int…
一.概述 注意:模拟战还可以用链表 二.代码 public class ArrayStack { @Test public void test() { Stack s = new Stack(5); s.push(1); s.push(2); s.push(3); s.push(4); s.push(5); s.push(6); s.printStack(); /*System.out.println("------------------------"); s.pop(); s.po…
一.编写一个酒店管理系统 1.直接上代码 package com.bjpowernode.java_learning; ​ public class D69_1_ { //编写一个程序模拟酒店的管理系统:预定房间.退房....... public static void main(String[] args) { } } class Room{ String no; String type;//“标准间”“双人间”“豪华间” boolean isUse;//true表示占用,false表示空闲…
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2715 Time limit : 5 sec Memory limit : 64 M Zhouguyue is a "驴友" and nowadays he likes traveling on an N * N matrix with a non-negative number in each grid, and each grid has a height. Zhouguyue star…
题目传送门 /* 题意:宽度为1,高度不等,求最大矩形面积 stack(数组模拟):对于每个a[i]有L[i],R[i]坐标位置 表示a[L[i]] < a[i] < a[R[i]] 的极限情况 st[]里是严格单调递增,若不记录的话还要O(n)的去查找L,R,用栈的话降低复杂度 */ #include <cstdio> #include <cstring> #include <algorithm> #include <stack> #inclu…
L2-002. 链表去重 给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值有重复的结点.即对任意键值K,只有键值或其绝对值等于K的第一个结点可以被保留.同时,所有被删除的结点必须被保存在另外一个链表中.例如:另L为21→-15→-15→-7→15,则你必须输出去重后的链表21→-15→-7.以及被删除的链表-15→15.[删除后的节点全部接到一个新的链表里] 输入格式: 输入第一行包含链表第一个结点的地址.以及结点个数N(<= 105 的正整数)[数据范围不大,可以考虑用结…
队列问题非STL解决方案 常年使用STL解决队列问题,以至于严重生疏队列的根本原理... 直到今日 被老师被迫 使用算法原理解决问题,方才意识到我对队列一窍不通... ...直到 经过一系列的坑蒙拐骗 之后,方才理清楚一些头绪,在此附记. 有关概念在此不再赘述,因为这东西怕不是一搜一大堆... 循环队列--数组存储方案: 我们需要的东西: 1.一个数组,拿来存队列. int ique[capa];//capa是数组(队列)的最大容量,看下面↓ 2.头指针及尾指针,指明队列的头和尾. int ih…
堆栈原理: 数组模拟堆栈: //数组模拟栈 class ArrayStack{ //栈顶 private int top = -1; private int maxSize; private int[] arrayStack; public ArrayStack(int maxSize){ this.maxSize = maxSize; arrayStack = new int[maxSize]; } //栈是否满 public boolean isFull(){ return top == m…
1. 概念 什么是"标准非STL容器"?标准非STL容器是指"可以认为它们是容器,但是他们并不满足STL容器的所有要求".前文提到的容器适配器stack.queue及priority_queue都是标准非STL容器的一部分.此外,valarray也是标准非STL容器. bitset:一种高效位集合操作容器. 2. API bitset提供的api: (constructor)    Construct bitset (public member function)…
题目很简单,给一个队列以及文件的位置,然后一个一个检查,如果第一个是优先级最高的就打印,否则放到队列后面,求所要打印的文件打印需要花费多长时间. 这里我用数组模拟队列实现,考虑到最糟糕的情况,必须把数组开到maxn*maxn.另外当所要打印的文件优先级不是最高的时候也需要排列到后面. 0.016s. 代码: #include <cstdio> const int maxn = 101; int t, n, m, time; int q[maxn*maxn]; int print() { int…
Problem UVA12657-Boxes in a Line Accept: 725  Submit: 9255 Time Limit: 1000 mSec Problem Description You have n boxes in a line on the table numbered 1...n from left to right. Your task is to simulate 4 kinds of commands: • 1 X Y : move box X to the…
Problem UVA11988-Broken Keyboard Accept: 5642  Submit: 34937 Time Limit: 1000 mSec Problem Description You’re typing a long text with a broken keyboard. Well it’s not so badly broken. The only problem with the keyboard is that sometimes the “home” ke…
You have n boxes in a line on the table numbered 1 . . . n from left to right. Your task is to simulate 4 kinds of commands: • 1 X Y : move box X to the left to Y (ignore this if X is already the left of Y ) • 2 X Y : move box X to the right to Y (ig…
You're typing a long text with a broken keyboard. Well it's not so badly broken. The only problem with the keyboard is that sometimes the "home" key or the "end" key gets automatically pressed (internally). You're not aware of this iss…
题目链接 /* 问题 将一排盒子经过一系列的操作后,计算并输出奇数位置上的盒子标号之和 解题思路 由于数据范围很大,直接数组模拟会超时,所以采用数组模拟的链表,left[i]和right[i]分别表示i号盒子的左边是谁和右边 是谁.特别提醒,4这个操作可以采用其他的办法去标记,而不必真的去模拟交换,否则会超时. */ #include<cstdio> #include<algorithm> using namespace std; ; int n,left[maxn],right[…
1350: To Add Which? Submit Page    Summary    Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 303     Solved: 134 Description There is an integer sequence with N integers. You can use 1 unit of cost to increase any integer in the sequence b…
题目链接: https://cn.vjudge.net/problem/POJ-3476 题目大意: 一串长度为N的彩球,编号为1-N,每个球的颜色为R,G,B,给出它们的颜色,然后进行如下操作: 每次消除连续颜色最长的最左端的一串,剩下的球如果分成两串,就把左右两串连接起来,输出每次消除的球的颜色及编号. 解题思路: 将球的同一颜色的串压入优先队列中,每次取出最长的串,相同长度的串取最左端的串. 取出来之后,如果将小球分成了两串,如果两端颜色一样可以合并,那就网优先队列中压入新合成的串.每次取…
指针的链表实现方式是,当前节点的next指向下一个节点,用数组模拟就是 for(int i=next[0];i!=0;i=next[i]) i=next[i]:就是一条链. 例题: 你有一个破损的键盘.键盘上的所有键都可以正常工作,但有时Home键或者End键会自动按下.你并不知道键盘存在这一问题,而是专心打稿子,甚至连显示器都没打开.当你打开显示器时之后,展现在你面前的是一段悲剧文本.你的任务时在打开显示器之前计算出这段悲剧文本. 输入包含多组数据.每组数据占一行,包含不超过100000个字母…
Leetcode 566. Reshape the Matrix 矩阵变形(数组,模拟,矩阵操作) 题目描述 在MATLAB中,reshape是一个非常有用的函数,它可以将矩阵变为另一种形状且保持数据不变. 已知一个由二维数组表示的矩阵,和两个正整数r(行),c(列),将这个二维数组变换为r*c的矩阵. 如果不能由原矩阵转换为r*c的矩阵就输出原矩阵,否则输出转换后的矩阵. 测试样例 Input: nums = [[1,2], [3,4]] r = 1, c = 4 Output: [[1,2,…
题目:id=1329">http://acm.csu.edu.cn/OnlineJudge/problem.php? id=1329 题意: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" align="middle" alt=""> 分析:数组模…
题意:给你一棵树,求两个点的最近公共祖先. 思路:因为只有一组询问,直接数组模拟好了. (写得比较乱) 原题请戳这里 #include <cstdio> #include <bitset> #include <cstring> #include <algorithm> using namespace std; int first[10005],v[10005],next[10005]; int main() { int cas; scanf("%d…