博客作业03--栈和队列

1.学习总结

2.PTA实验作业

题目1:jmu-字符串是否对称

1设计思路

    for i = 1 to 字符串str结束
        if 栈顶元素 != str[i] 
            字符串不对称输出no
    endfor
    字符串对称输出yes

2代码截图

3PTA提交列表说明


前面几处错误都是因为输入用的是getchar(),后来改用gets就对了好像是因为这题输入不是以 做结尾的

题目2 : 银行业务队列简单模拟

1设计思路

    定义栈odd存放偶数,even存放奇数
    for i = 1 to n
        输入编号x
        奇数push到even,偶数push到odd
    endfor
    while(odd&&even均不为空)
            输出两个even元素再输出一个odd内元素
    输出even和odd栈内剩余元素

2代码截图


3PTA提交列表说明


答案错误是因为输出格式错误

题目 3: 银行排队问题之单队列多窗口服务

1设计思路

    for i = 1 to 总人数n
        for j = 1 to 总柜台数k
        if 顾客来的时间cus[i].cometime > 柜台结束服务的时间win[j]
            柜台结束时间win[j] = 顾客完成业务时间
        if 柜台完成服务时间win[j] >最快完成柜台时间fast
              标记单前柜台为最快完成柜台
        endfor    
        if 顾客来的时间cus[i].cometime < 柜台结束服务的时间win[j]
              让该顾客去最快完成时间办理业务
     endfor
     输出题目需要值

2代码截图

3 PTA提交列表说明


这题有一个答案错误是因为顾客来的比窗口结束服务时间早的情况考虑错误

3.截图本周题目集的PTA最后排名

1.栈PTA排名

2. 队列PTA排名

3. 我的总分:

123+111 = 234

4. 阅读代码

#include<bits/stdc++.h>  
  
using namespace std;  
  
// 按下标定义余数的输出字符  
const char rep[] = "0123456789ABCDEF";   
  
int main()  
{  
    int n,x;  
    while(~scanf("%d %d", &x, &n))  
    {  
        stack<int> st;  
        while(x)  
        {  
            st.push(x % n); // 余数入栈  
            x /= n; // 整除  
        }  
        while(!st.empty())  
        {  
            int tp = st.top();  
            st.pop();  
            putchar(rep[tp]); // 按照对应的样式输出余数  
        }  
        puts("");  
    }  
  
    return 0;  
}  

题目:ip地址转换
这一题以前也做过,用的是数组储存,把ip地址转化为二进制需要逆置最后的余数,这和栈先进后出的特点相符合,所以这题要是用栈来做会更加简单一点
可以免除数组倒续输出的过程

5. 代码Git提交记录截图


原文地址:https://www.cnblogs.com/Airoure/p/8824655.html