![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Self-reconciliation
湖南某985蒟蒻
展开
-
写一篇水文纪念一下我调试了几个小时的程序。。。
原题其实挺简单的 luogu P1160 队列安排涉及到的就是简单的队列插入删除等操作但是不知道为什么就是一直内存访问越界调试的时候也一头雾水后来经过三四个小时的调试才知道是我自己写的链表类初始化有问题。。。。当时写的时候没注意,现在酿成大错了template<class T>LinkedList<T>::LinkedList(){ Node<T> a(0,NULL); front=pre=&a; cur=rear=NULL;原创 2022-04-05 20:46:50 · 954 阅读 · 0 评论 -
Simulated maze模拟迷宫(C++实现)
假设有一个迷宫,用Maze(1...M,1...N)表示迷宫,数组元素为1表示死路,为0表示通路,Maze(x1,y1)为迷宫的入口,Maze(x2,y2)为迷宫的出口。试设计一个算法求出一个可能的出口。深度优先遍历,对每条可能的路径进行一一判断,若为可能的路径则将当前路径节点加入路径栈,若走到死胡同,则回溯至上一个路口在进行判断。#include<stack>#include<iostream>#define ROW 6#define COL 6using nam原创 2022-03-16 22:45:10 · 739 阅读 · 0 评论 -
回文串的判断(C++)
回文串是指一个正读和反读都相同的字符串因此可以使用栈来模拟正读和反读正读时压栈,反读时弹栈,如果不相等直接输出NO最后遍历完毕后输出YES用了STL的stack没自己写。。。#include<stack>#include<iostream>using namespace std;int main(){ char s[100]; cin.getline(s,100); stack<char> tems; int n=0; for(;s原创 2022-03-14 20:46:35 · 1983 阅读 · 0 评论 -
判断中缀表达式中的符号是否合法(C++)
使用栈来存放左括号,一旦遇到右括号就弹出,弹出不对应的括号或者遍历完毕后栈非空则为不合法的中缀表达式。#include<iostream>using namespace std;template<class T>class Stack{ private: int top; T *elements; int MaxSize; public: Stack(int Maxsize); ~Stack(){ delete []elements; .原创 2022-03-14 20:18:49 · 1021 阅读 · 0 评论 -
中缀表达式转化为后缀表达式(C++实现)
中缀表达式是我们平常看到的算数表达式如:a+b*(c-d)而后缀表达式则是将计算数和计算符分开写,其中每个操作符与对应的两个操作数的位置关系是两个操作数在前而操作符在后。如上面的例子中的中缀表达式可以转化为后缀表达式:abcd-*+转化算法为:(1)若遇到操作数,则直接将其输出(2)若遇到操作符,则我们将其放入栈中,遇到'('时也将其放入栈中(3)若遇到')',则循环弹出栈中的元素,直到弹出的操作符为'('为止。这时左括号只弹出而并不输出(4)若遇到其他操作符,则先应该判断栈原创 2022-03-11 20:15:10 · 5806 阅读 · 0 评论 -
合法的出栈顺序判断(c++)
【问题描述】将1,2...n依次入栈,并给出一段序列,用空格隔开,请判断这种出栈顺序是否存在。【输入】n和num[]【输出】"YES"or"NO"#include<iostream>using namespace std;template<class T>class Stack{ private: int top; T *elements; int MaxSize; public: Stack(int Maxsize); ~S原创 2022-03-11 12:43:59 · 435 阅读 · 0 评论 -
后缀表达式的计算(c++代码实现)
使用栈对数据进行存放读取到操作符时取栈顶的两位数进行计算其中数据包括负数,小数等(P.S.自己写的代码,不具有参考性,但是能跑就行,求轻喷)#include<iostream>using namespace std;template<class T>class Stack{ private: int top; T *elements; int MaxSize; public: Stack(int Maxsize); ~Stack(){原创 2022-03-10 22:55:58 · 1618 阅读 · 0 评论 -
Leetcode.20 有效的括号
可以使用栈这一数据结构来解决在遇到一个左括号的时候可以先把它放入栈中,当遇到一个右括号时,从栈顶取出左括号,若不能匹配则字符串s无效。可以先对字符串的长度进行判断,当s.length()为奇数时,直接返回false,节省程序判断的时间。class Solution{ public: bool isValid(string s){ int n=s.size(); if(n%2==1){ return false; } unordered_map<cha原创 2022-03-10 20:35:12 · 64 阅读 · 0 评论 -
双栈(Dual Stack)c++实现
某程序需要两个栈s1、s2,但任何时候s1、s2存储的元素总数不超过2MAX,但某些时候s1或s2储存的元素个数会超过MAX。对于双栈,可以采用同一个内存空间,通过首指针和尾指针分别作为两个栈的顶指针,从而实现双栈。双栈最大的好处是内存利用率高,灵活性强。但也有运算复杂、长度固定等缺点。#include<iostream>using namespace std;template <class T>class DualStack{ private: in原创 2022-03-10 19:55:19 · 992 阅读 · 0 评论 -
栈的类实现(C++)
#include<iostream>using namespace std;template<class T>class Stack{ private: int top; T *elements; int MaxSize; public: Stack(int Maxsize); ~Stack(){ delete []elements; } int Push(const T& x); int Size(); T Pop().原创 2022-03-09 23:25:53 · 331 阅读 · 0 评论 -
优先级队列的实现(C++)
以“<”为优先级依据#include<iostream>using namespace std;const int MaxPQSize=50;#define T int class PQueue{ private: T pqlist[MaxPQSize]; int count; public: PQueue(){ count=0; }; ~PQueue(){ } void PQInsert(const T &x);原创 2022-03-08 10:42:16 · 238 阅读 · 0 评论 -
循环队列模拟约瑟夫问题(C++)
约瑟夫问题:有 N 个人围成一圈,每个人都有一个编号,编号由入圈的顺序决定,第一个入圈的人编号为 1,最后一个为 N,从第 k (1<=k<=N)个人开始报数,数到 m (1<=m<=N)的人将出圈,然后下一个人继续从 1 开始报数,直至所有人全部出圈,求依次出圈的编号。#include<iostream>using namespace std;struct cQueue{ int *a=NULL; int maxSize; int front,rear原创 2022-03-08 10:37:40 · 879 阅读 · 0 评论 -
循环队列解决舞会问题(C++实现)
【题目描述】假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。【输入】第一行两队的人数;第二行舞曲的数目。【输出】配对情况。【输入样例】4 67【输出样例】1 12 23 34 41 52 63 1#include<iostream>using name.原创 2022-03-08 10:33:11 · 1332 阅读 · 0 评论