zoukankan      html  css  js  c++  java
  • DS博客作业02--栈和队列

    0.PTA得分截图

    1.本周学习总结(0-4分)

    1.1 总结栈和队列内容

    1.1.1栈的存储结构及操作:

    先进后出,先进的数据在栈底,后进的数据在栈顶,只能栈顶出栈。链栈,链结构的栈,利用头插法。
    栈结构:

      typedef struct
      {
       int data[n];
       int top;
      }stack;
    

    初始化栈:

    stack*s;
    s=new stack;
    s->top=0;//此时为栈空状态。
    

    入栈:

    cin>>e;
    s->top++;
    s->data[s->top]=e;
    

    出栈:

    e=s->data[s->top];
    s->top--;
    

    C++ 中 stack 类型

    #include<stack>
    stack<int>s;
    s.push(n);  //入栈
    s.top();    //取栈顶
    s.pop();    //出栈
    s.empty();  //判断是否空栈
    

    栈的应用:符号配对,迷宫问题,表达式转换。
    实例:浏览器历史记录,递归等等。

    1.1.2队列的存储结构及操作:

    队列 先进先出,就如排队,从队尾进,队头出。
    队列结构

    typedef struct
    {
      int data[n];
      int front;  //队头
      int rear;   //队尾
      int count;  //数量,当count=0时,队空
    }queue;
    

    初始化

    queue*q;
    q=new queue;
    q->front=-1;
    q->rear=-1;
    count=0;
    

    入队

    cin>>e;
    q->rear++;
    q->data[q->rear]=e;
    count++;
    

    出队

    q->front++;
    e=q->data[q->front];
    count--;
    

    C++ queue类型

    #include<queue>
    queue<int>q;
    q.front();    //返回队头
    q.back();    //返回队尾
    q.push();     //入队
    q.pop();      //出队
    q.empty();    //判断是否队空
    

    队的应用:银行排队问题,迷宫问题也可以用。
    为了充分利用空间,循环队列:
    入队:q->rear=(q->rear+1)%MaxSize
    出队:q->front=(q->front+1)%MaxSize

    1.2.谈谈你对栈和队列的认识及学习体会。

    栈和队列的题目比较难吧,pta上的题目一题要做好久,刚开始一题做了一天,费脑子。
    写代码用C++的库 就挺方便的,自己写结构来用比较难。
    多做做题目对他们的掌握会更好。

    2.PTA实验作业(0-2分)

    2.1.题目1:题目名称

    2.1.1代码截图(注意,截图,截图,截图。不要粘贴博客上。)





    2.1.2本题PTA提交列表说明。


    部分正确是因为乘除和括号没弄好。
    格式错误 是因为第一个符号为括号的时候
    输出 前面会多一个空格,利用flag 就解决空格的输出问题
    修改后就对了。

    2.2.题目2:题目名称

    2.2.1代码截图(注意,截图,截图,截图。不要粘贴博客上。)




    2.2.2本题PTA提交列表说明。


    部分正确 是在因为/* 我用<代替入栈,忘记字符串要往下两位。要i++;
    改正后就对了,麻烦主要在 要自己造测数据,自己找错。

    3.阅读代码(0--4分)

    3.1 题目及解题代码


    3.1.1 该题的设计思路

    遍历队列,将最小的字母移动到前面
    然后接着 在遍历,将剩下字母中最小的移动到前面
    如此循环,完成序列。
    每个字母都可以移动到任意位置

    3.1.2 该题的伪代码

    if(k==1)直接输出
    if(k>=2)
    { 
    for(i=1;i<Size;i++)
    循环找到剩余字母串中
    最小的字母
    移动到第一位
    }
    

    3.1.3 运行结果

  • 相关阅读:
    后端结对编程报告(2018.6.6)
    Burn Down Chart(2018.6.4~2018.6.10)
    C#多线程List的非线程安全性
    C#泛型参数多线程与复杂参数多线程
    Java学习之App开发公司手机端设想
    Java学习之SpringBoot整合SSM Demo
    Java学习之Mysql结构优化
    Java学习之Dubbo+ZooKeeper分布式服务Demo
    C# 面向切面编程--监控日志记录方案
    C# 通用类型转换方法
  • 原文地址:https://www.cnblogs.com/you-18250630840/p/12520150.html
Copyright © 2011-2022 走看看