自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 KMP算法实现(c++)

KMP算法的核心就是针对于匹配字符串的Next数组的计算GenKMPNext函数初始化Next数组使用了优化方法 即当p[next[i]]=s[j]=s[i]时,next[i]=next[next[i]]就是说如果上次匹配失败的字符和下一次匹配失败的字符相同的话那么这次匹配也是不必要的 所以就可以直接从下一次的字符的下一个字符开始匹配#include<bits/stdc++.h>using namespace std;int len(char *s){ int i

2022-04-05 20:52:40 925

原创 写一篇水文纪念一下我调试了几个小时的程序。。。

原题其实挺简单的 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 963

原创 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 799

原创 回文串的判断(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 2007

原创 判断中缀表达式中的符号是否合法(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 1040

原创 中缀表达式转化为后缀表达式(C++实现)

中缀表达式是我们平常看到的算数表达式如:a+b*(c-d)而后缀表达式则是将计算数和计算符分开写,其中每个操作符与对应的两个操作数的位置关系是两个操作数在前而操作符在后。如上面的例子中的中缀表达式可以转化为后缀表达式:abcd-*+转化算法为:(1)若遇到操作数,则直接将其输出(2)若遇到操作符,则我们将其放入栈中,遇到'('时也将其放入栈中(3)若遇到')',则循环弹出栈中的元素,直到弹出的操作符为'('为止。这时左括号只弹出而并不输出(4)若遇到其他操作符,则先应该判断栈

2022-03-11 20:15:10 5861

原创 C++报错:terminate called after throwing an instance of ‘std::bad_array_new_length‘ what(): std::bad

今天在写一个栈的题目时发现运行时报了如下错误并且程序意外停止但是有的时候却又能正常运行,但输出结果之后又出现了程序停止工作的问题后来经过测试发现原来是构造函数中的参数手滑写成了类的参数,导致初始化了一个随即大小的栈,并且栈申请的动态空间可能会非常大,所以就会引起系统程序直接把程序杀了。。。下次要把析构函数的参数用一个和类本身的成员参数不太一样的缩写,不然很容易手滑打错导致这样不明不白的错误。。。template<class T>Stack<T>::Stack.

2022-03-11 19:51:33 5535 1

原创 合法的出栈顺序判断(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 460

原创 解决cin不能读一行的方法

C++字符串在输入时,使用cin流输入会遇到碰见空格自动暂停读取的问题#include<iostream>using namespace std;int main(){ char str[100]; cin>>str;}当然,也可以使用for循环多次读取实现输入for(int i=0;i<defaultnum;i++){ cin>>s;}不过这样做的缺点是要明确循环的次数,在大量多次循环时输入过于繁琐因此我

2022-03-11 00:06:08 8771

原创 后缀表达式的计算(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 1649

原创 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 102

原创 双栈(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 1018

原创 栈的类实现(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 343

原创 优先级队列的实现(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 246

原创 循环队列模拟约瑟夫问题(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 900

原创 循环队列解决舞会问题(C++实现)

【题目描述】假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。【输入】第一行两队的人数;第二行舞曲的数目。【输出】配对情况。【输入样例】4 67【输出样例】1 12 23 34 41 52 63 1#include<iostream>using name.

2022-03-08 10:33:11 1360

原创 计算机系统实验报告

一、WSL环境的安装1.安装Windows Terminal安装Windows Terminal可以使你的终端更加专业。在Windows Terminal里可以同时打开多个页面,同时可以调整字体的颜色和大小,视觉效果较Windows自带的终端更好。2.激活Windows Subsystem for Linux(WSL)(1)激活WSL的功能在具有管理员权限的PowerShell中输入一下命令来安装运行适用于Linux的Windows子系统(WSL)所需的全部内容..

2022-03-08 10:26:38 580

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除