- 博客(14)
- 收藏
- 关注
原创 DS栈—波兰式,逆波兰式
求波兰式,需要操作数栈(注意不是计算结果入栈,有计算式入栈),运算符栈。栈顶运算符优先级>新读入运算符优先级出栈,教材第三章表3.1中的相同运算符优先级>(从左往右计算)改为
2024-09-24 15:23:09 586
原创 DS堆栈--迷宫求解
如果迷宫存在路径,将路径中每个方格的x和y坐标输出,从起点到终点,每输出四个方格就换行,最终以单词END结尾,具体格式参考示范数据。给出一个N*N的迷宫矩阵示意图,从起点[0,0](也可能是[1,1])出发,寻找路径到达终点[N-1, N-1]第三行起,输入迷宫每一行的每个方格的状态,0表示可通过,1表示不可通过。如果迷宫不存在路径,则输出no path并回车。第二行输入n,表示第一个迷宫有n行n列。第一行输入t,表示有t个迷宫。以此类推输入下一个迷宫。
2024-09-23 16:16:34 392
原创 DS堆栈--括号匹配
从上例可以看出第1和第2个括号匹配,第3和第10个括号匹配,4和5匹配,6和9匹配,7和8匹配,11和12匹配。处理表达式过程中需要对括号匹配进行检验,括号匹配包括三种:“(”和“)”,“[”和“]”,“{”和“}”。接下来的t行的每行输入一个表达式,表达式只考虑英文半角状态输入,无需考虑中文全角输入。随后如果连续接收到左括号,则不断进堆栈。2、 当接受第1个右括号,则和最新进栈的左括号进行匹配,表示嵌套中1组括号已经匹配消除。对于每一行的表达式,检查括号是否匹配,匹配则输入ok,不匹配则输出error。
2024-09-23 14:28:32 491
原创 DS堆栈--行编辑
使用C++的STL堆栈对象,编写程序实现行编辑功能。行编辑功能是:当输入#字符,则执行退格操作;如果无字符可退就不操作,不会报错。每行输出最终处理后的结果,如果一行输入的字符串经过处理后没有字符输出,则直接输出NULL。本程序默认不会显示#字符,所以连续输入多个#表示连续执行多次退格操作。注意:必须使用堆栈实现,而且结果必须是正序输出。第一行输入一个整数t,表示有t行字符串要输入。每输入一行字符打回车则表示字符串结束。第二行起输入一行字符串,共输入t行。
2024-09-23 14:13:59 143
原创 DS堆栈--逆序输出(不使用STL栈)
输入一个字符串,按字符按输入顺序压入堆栈,然后根据堆栈后进先出的特点,做逆序输出。请编写堆栈操作的具体实现代码,实现字符串的逆序输出,需自行实现堆栈。len = str.length() //获取输入字符串的长度。//把输入的字符串保存在变量str中。第二起,每一行输入一个字符串,注意字符串不要包含空格。第一行输入t,表示有t个测试实例。每行逆序输出每一个字符串。
2024-09-22 21:12:23 345
原创 前驱后继--双向链表(线性结构)
对给定的每个关键字,输出此关键字前驱节点关键字和后继节点关键字。如果给定的关键字没有前驱或者后继,则不输出。给定关键字为每个输出占一行。对于给定的一列数据,按照给定的顺序建立双向链表,按照关键字找到相应节点,输出此节点的前驱节点关键字及后继节点关键字。这样不仅能从链表头节点的位置遍历整个链表所有节点,也能从链表尾节点开始遍历所有节点。(数据保证关键字在数列中没有重复)。个要查找的关键字,每个占一行。(代表要找的关键字的个数)。有一个指针指向了后继节点。又有一个指向前驱节点。
2024-09-22 21:00:29 183
原创 DS单链表--结点交换
swap (ListNode * p, ListNode * q) //p和q表示指向两个结点的指针。swap(int pa, int pb) //pa和pb表示两个结点在单链表的位置序号。注意不能简单交换两个结点包含数据,必须通过修改指针来实现两个结点的位置交换。用C++实现含头结点的单链表,然后实现单链表的两个结点交换位置。
2024-09-21 21:50:36 343
原创 DS链表—学生宿舍管理
分析题目#class nodepublic:int room;node* next;name = "";int len;int l = 20;p1 = q;a++;int x = n;int room;r = q;!!!!!!!!!!!!!!\n";cout
2024-09-21 20:40:15 301
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人