精华内容
参与话题
问答
  • 2019年王道论坛四本专业辅导书,高清pdf; 2019年王道论坛四本专业辅导书,高清pdf打包下载;
  • 王道论坛和九度论坛

    2014-12-24 16:44:00
    http://ac.jobdu.com/problem.php?pid=1081 http://www.cskaoyan.com/thread-185868-1-1.html 转载于:https://www.cnblogs.com/diegodu/p/4182766.html

    http://ac.jobdu.com/problem.php?pid=1081

     

    http://www.cskaoyan.com/thread-185868-1-1.html

    转载于:https://www.cnblogs.com/diegodu/p/4182766.html

    展开全文
  • 一、栈的应用 括号匹配问题 #include <iostream> #include <cstdio> #include <stack> using namespace std; stack<int&...int main() ...

    一、栈的应用

    括号匹配问题

    #include <iostream>
    #include <cstdio>
    #include <stack>
    using namespace std;
    stack<int> S;
    char str[110];   // 保存输入字符串
    char ans[110];   // 保存输出字符串
    int main() {
        while (scanf("%s", str) != EOF) {
            int i;
            for (i = 0; str[i] != '\0'; i++) { // 从左到右遍历字符串
                if (str[i] == '(') {   // 若遇到左括号
                    S.push(i);     // 将其数组下标放入栈中
                    ans[i] = ' ';    // 暂且将对应的输出字符串位置改为空格
                }
                else if (str[i] == ')') {   // 若遇到右括号
                    if (!S.empty()) {   // 若此时栈非空
                        S.pop();
                        ans[i] = ' ';   // 正确匹配,修改输出中该位置为空格
                    }
                    else ans[i] = '?';     // 若栈为空,则无法找到左括号与其匹配,修改输出中该位置为?
                }
                else ans[i] = ' ';   // 若为其它字符,与括号匹配无关,则修改输出为空格
            }
            while (!S.empty()) {   // 当字符串遍历完成后,尚留在栈中的左括号无法匹配
                ans[S.top()] = '$';    // 修改骑在输出中的位置为$
                S.pop();    // 弹出
            }
            ans[i] = '\0';     // 为了使输出形成字符串,在最后一个字符后添加一个空字符
            printf("%s\n", str);
            printf("%s\n", ans);    // 输出原字符串和答案字符串
        }
        return 0;
    }

    当右括号出现时,和栈中左括号匹配时,要注意判断栈是否为空,不能直接s.top()
    在牛客上打一个很简单的括号匹配问题时,我就是犯了这个错误,导致出现了段错误。

    利用堆栈对表达式求值

    #include <stack>
    #include <iostream>
    using namespace std;
    char str[220];    // 保存表达式字符串
    /*
     优先级矩阵,若mat[i][j] == 1,则表示i号运算度优先级大于j号运算符
     运算符编码规则为+为1号,-为2号,*为3号,/为4号,我们人为添加在表达式首尾的标记运算符为0号
     */
    int mat[][5] = {1, 0, 0, 0, 0,
                    1, 0, 0, 0, 0,
                    1, 0, 0, 0, 0,
                    1, 1, 1, 0, 0,
                    1, 1, 1, 0, 0 };
    stack<int> op;    // 运算符栈,保存着运算符编号
    stack<double> in;    // 数字栈,运算结果可能存在浮点数,所以保存元素为double
    /* 获得表达式中下一个元素函数,若函数运行结束时,引用变量reto为true,则表示该元素为一个运算符,其编号保存在引用变量retn中;
     否则,表示该元素为一个数字,其值保存在引用变量retn中,引用变量i表示便利到的字符串下标
     */
    void getOp(bool &reto, int & retn, int &i) {
        if (i == 0 && op.empty() == true) {  // 若此时遍历字符串第一个字符,且运算符栈为空,我们人为添加编号为0的标记字符
            reto = true;    // 为运算符
            retn = 0;     // 编号为0
            return;   // 返回
        }
        if (str[i] == '\0') {  // 若此时遍历字符为空字符,则表示字符串已经被遍历完
            reto = true;       // 返回为运算符
            retn = 0;          // 编号为0的标记字符
            return;
        }
        if (str[i] >= '0' && str[i] <= '9') {   // 若当前字符为数字
            reto = false;
    
        } else {  // 否则
            reto = true;
            if (str[i] == '+') {
                retn = 1;
            } else if (str[i] == '-') {
                retn = 2;
            } else if (str[i] == '*') {
                retn = 3;
            } else if (str[i] == '/') {
                retn = 4;
            }
            i += 2;   // i递增,跳过该运算字符和该运算字符后的空格
            return;
        }
        retn = 0;    // 返回结果为数字
        // 若字符串未被遍历完,且下一个字符不是空格,则依次遍历其后数字,计算当前连续数字字符表示的数值
        for (; str[i] != ' ' && str[i] != '\0'; i++) {
            retn *= 10;
            retn += str[i]-'0';
        }
        if (str[i] == ' ')  // 若其后字符为空格,则表示字符串未被遍历完
            i++;   // 递增,跳过该空格
        return;
    }
    int main() {
        while (gets(str) ) {  // 输入字符串,当其位于文件尾时,gets返回0
            if (str[0] == '0' && str[1] == '\0') break;    // 若输入只有一个0,则退出
            bool retop;
            int retnum;    // 定义函数所需的引用变量
            int idx = 0;   // 定义遍历到的字符串下标,初始值为0
            while (!op.empty())
                op.pop();
            while (!in.empty())
                in.pop();   // 清空数字栈和运算符栈
            while (true) {   // 循环遍历表达式字符串
                getOp(retop, retnum, idx);    // 获取表达式中下一个元素
                if (retop == false) {   // 若该元素为数字
                    in.push((double)retnum);    // 将其压人数字栈中
                } else {
                    double tmp;
                    if (op.empty() || mat[retnum][op.top()] == 1) {
                        op.push(retnum);
                    }  // 若运算符栈为空或者当前便利到的运算符优先级大于站定运算符,则将该运算符压入运算符栈
                    else {
                        while (mat[retnum][op.top()] == 0) {  // 只要当前运算符优先级小于栈顶元素运算符,则重复循环
                            int ret = op.top();  // 保存栈顶运算符
                            op.pop();
                            double b = in.top();
                            in.pop();
                            double a = in.top();
                            in.pop();
                            if(ret == 1) tmp = a + b;
                            else if (ret == 2) tmp = a - b;
                            else if (ret == 3) tmp = a * b;
                            else tmp = a / b;
                            in.push(tmp);   // 将结果压回数字栈
                        }
                        op.push(retnum);   // 将当前运算符压入运算符栈
                    }
                }
                if (op.size() == 2 && op.top() == 0) break;   // 若运算符栈中只有两个元素,且其栈顶元素为标记运算符明则表示表达式求值结束
            }
            printf("%.2f\n", in.top());    // 输出数字栈中位移的数字,即为答案
        }
        return 0;
    }

    这道题要注意,对栈中两个数字进行表达式求值时,在栈中下面位置的是左操作数,在上面的是右操作数。

    展开全文
  • 王道论坛计算机考研机试指南》
  • 王道论坛 2020考研 操作系统
  • 王道论坛 欢迎欢迎

    千次阅读 2009-04-03 21:43:00
    王道真的很不错,而且里面的资料很齐全http://www.cskaoyan.com

    王道真的很不错,而且里面的资料很齐全http://www.cskaoyan.com

    展开全文
  • 935初试资料,东南大学计算机学院考研,专业课935初试资料935初试资料,东南大学计算机学院考研,专业课935初试资料
  • void Del_X_recursion(Linklist &L,int x){ if(L==NULL) return; //套路:递归出口return if(L->data!=x){ //若L所指的结点值不为x Del_X_recursion(L->next,x) //递归调用 return;...
    void Del_X_recursion(Linklist &L,int x){
    	if(L==NULL) return; //套路:递归出口return
    	if(L->data!=x){  	//若L所指的结点值不为x
    		Del_X_recursion(L->next,x)  //递归调用
    		return;	//递归出口
    	}
    	LNode *p;
    	p=L;
    	L=L->next; //上下层的L是同一个L,因为传入的是引用,所以不会断链
    	delete p;
    	Del_X_recursion(L,x);	//递归调用
    	
    }
    

    题目总结:
    首先使用递归的套路,找到递归出口,即L为空的时候,除此之外,L->data != x递归结束,还有一个出口哦!

    然后就是是否断链的问题,传参时,我们传的是引用类型,递归的上层和下层的L是同一个L,L=L->next; 之后就不会出现断链,如果把引用符号去掉,则会出现断链。

    展开全文
  • 2020王道操作系统2020王道数据结构,2020王道计算机网络,2020王道计算机组成原理pdf大合集 资料链接: https://shimo.im/docs/QCgdKCTpypjHdhXg/ 一年又一年,参加计算机考研的大军越来越多,408到底有多难,初试...
  • 王道2020操作系统 考研用书 综上所述,操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的...
  • 2020王道操作系统(清晰无水印扫描版)
  • 最新版王道,计算机操作系统2019版,高清PDF,来找资料的都查过,我也不多介绍,互相学习,求个好评
  • 2020王道操作系统(高清无水印版)
  • 2020王道考研操作系统

    2019-04-16 10:33:11
    2020王道考研操作系统,计算机考研学子必备,人手一本,十分经典。
  • 2020 考研王道.rar

    2019-09-08 19:47:19
    2020王道考研 全套4本【计组,计网,操作系统,数据结构】(高清无水印,无密码)。
  • 2020考研计算机王道复试机试指南 如题 高清
  • 2021 王道考研 操作系统+习题讲解

    千次阅读 2020-10-03 14:21:30
    2021王道操作系统高清PDF 链接: https://pan.baidu.com/s/1555Ps_Exf9JBe_yWtzZtDg 提取码: r2ut 复制这段内容后打开百度网盘手机App,操作更方便哦 操作系统新课 链接: ...
  • 这是2019年王道出的关于OS的考研视频讲解,配套王道的OS考研书籍,还有视频讲解的PPT,加上王道OS考研书籍的课后习题的讲解(这个讲解不是每一题都讲,而是选出几题讲解而已)。
  • 王道论坛(www.cskaoyan.com)组织名校高分选手,编写了4本单科辅导书。单科书是基于王道之前作品的二代作品,不论是编排方式,还是内容质量都较前一版本的王道书有了较大的提升。这套书也参考了同类优秀的教材和...
  • 一.代码能力培养的层次结构 1.会编写(默写)经典程序的代码。 2.将自己的想法和抽象的问题转换为代码实现。 3.编写出的代码在大量的,多种多样的测试用例之前仍然具有健壮性。 ...二....1.特殊判题:表示该题有多个符合...
  • 王道的2019操作系统考研复习资料,希望对2019计算机考研的同学有帮助,绝对不存在欺骗,可能清晰度不够高,但是基本上不影响使用
  • 王道操作系统考研思维导图

    千次阅读 2020-01-04 19:21:55
    导图链接 http://note.youdao.com/noteshare?id=0ee0a23df374e1265414840fd3be25a1
  • 考研机试宝典,几乎概括了所有题型,计算机考研的同学可以看一看。
  • 王道2019年操作系统考研复习指导电子版PDF高清无水印,资源来源于互联网,仅供参考,请支持正版
  • 文章目录1. 排序2.1 快速排序- 思想- 复杂度- 代码2. 日期问题2.1 数据结构2.2 判断闰年2.3 获取下一天2.4 计算间隔日期3. HashMap3.1 内部结构3.2 存取实现3.3 基本用法3.4 遍历3.5 专用名词3.6 面试问题4....
  • 2020王道考研408 操作系统 王道论坛 二维码微信可扫 操作系统
  • 待续
  • 王道计算机操作系统的PPT和课件,本人花了大价钱买了,在这儿分享给大家希望能够考的好成绩,上岸目标。
  • 2019_王道计算机网络_考研复习资料(无水印PDF),供大家下载学习。 2019_王道计算机网络_考研复习资料(无水印PDF),供大家下载学习。 2019_王道计算机网络_考研复习资料(无水印PDF),供大家下载学习。
  • 王道2020考研笔试全集+机试指南。包括操作系统,数据结构,计算机组成原理,计算机网络,王道论坛机试指南。

空空如也

1 2 3 4 5 ... 20
收藏数 3,786
精华内容 1,514
关键字:

王道论坛