博客作业03--栈和队列

本文介绍了队列在不同场景的应用,包括字符串对称性检查、报数游戏模拟及银行业务队列模拟。通过具体实例展示了队列的基本操作和使用技巧。

1.学习总结

1233817-20180421210206374-898377619.png

2.PTA实验作业

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

2.2 设计思路

* 定义一个栈s用来存放str字符串的值
* str的值依次如s栈中
* str的值与s值依次比较
  如果有一个不等,return 0
  反之都相等 ,return 1

2.3 代码截图

1233817-20180414140421091-1729467955.png

2.4 PTA提交列表说明。

1233817-20180414140844257-60294670.png

  • 主函数没有写入。

2.1 题目17-1 jmu-报数游戏

2.2 设计思路

* 创建队列q1
* 将1至n的数字依次入队列
* 如果m大于n ,return error
  否则
       while(i<n)
       如果j小于m(j自增)
       e等于队列头,消除队列头,将e插入队尾
       否则
            输出队列头,消除队列头(考虑i为1,输出的格式)

2.3 代码截图

1233817-20180414141640481-968196905.png

2.4 PTA提交列表说明。

1233817-20180414141655258-1122417434.png
没有考虑到结尾不能有多余空格

2.1 题目1:7-2 银行业务队列简单模拟

2.2 设计思路

* 将认识排号为奇数存入队列A,反之存入B
* whileA,B都不空
 输出A队列的前两个 ,输出B队列t头
*  whileA不空
   输出A
* whileB不空
  输出B

2.3 代码截图

1233817-20180414143208820-1650763162.png

2.4 PTA提交列表说明

1233817-20180414143236159-276806600.png
没有考虑到最小N的情况

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

3.1 栈PTA排名

1233817-20180414144758319-1180211589.png

3.2 队列PTA排名

1233817-20180414144918312-2036719739.png

3.3 我的总分

80+75=155

4. 阅读代码

#include<iostream>
using namespace std;
#define MAXSIZE 1000
typedef int QElemType;
typedef struct
{
    QElemType *base;
    int front;
    int rear;
}SqQueue;
void InitQueue(SqQueue &Q)
{
    Q.base=new QElemType[MAXSIZE];
    Q.front=Q.rear=0;
}
void CreateSqQueue(SqQueue &Q1,SqQueue &Q2,int sum)
{
    int a;
    for(int i=0;i<sum;i++)
    {
        cin>>a;
        if(a%2)
        {
            Q1.base[Q1.rear]=a;
            Q1.rear=(Q1.rear+1)%MAXSIZE;
        }
        else
        {
            Q2.base[Q2.rear]=a;
            Q2.rear=(Q2.rear+1)%MAXSIZE;
        }
    }
}
void PrintfSqQueue(SqQueue &Q1,SqQueue &Q2,SqQueue Q3,int s)
{
    int a=1;
    while((Q1.front!=Q1.rear)||(Q2.front!=Q2.rear))
    {
        if((a==1)||(a==2))
        {
            if(Q1.front!=Q1.rear)
            {
                Q3.base[Q3.rear]=Q1.base[Q1.front];
                Q3.rear=(Q3.rear+1)%MAXSIZE;
                Q1.front=(Q1.front+1)%MAXSIZE;
            }
        }
        else
        {
            if(Q2.front!=Q2.rear)
            {
                Q3.base[Q3.rear]=Q2.base[Q2.front];
                Q3.rear=(Q3.rear+1)%MAXSIZE;
                Q2.front=(Q2.front+1)%MAXSIZE;
            }
        }
        a++;
        if(a>3)
            a=1;
    }
    cout<<Q3.base[Q3.front];
    Q3.front=(Q3.front+1)%MAXSIZE;
    for(int i=0;i<s-1;i++)
    {
        cout<<" "<<Q3.base[Q3.front];
        Q3.front=(Q3.front+1)%MAXSIZE;
    }
}
int main ()
{
    int sum;
    SqQueue Q1,Q2,Q3;
    InitQueue(Q1);
    InitQueue(Q2);
    InitQueue(Q3);
    cin>>sum;
    if(sum)
    {
        CreateSqQueue(Q1,Q2,sum);
        PrintfSqQueue(Q1,Q2,Q3,sum);
    }
    else
        cout<<"0"<<endl;
    return 0;
}

代码简单的银行业务队列简单模拟。
地址:http://yuncode.net/code/c_59cdf8b5aa5d478

5. 代码Git提交记录截图

1233817-20180414165637878-361079047.png

转载于:https://www.cnblogs.com/guobaoqing/p/8831500.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值