DS博客作业02--栈和队列

0.PTA得分截图

DS博客作业02--栈和队列_第1张图片

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;

DS博客作业02--栈和队列_第2张图片

出栈:

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

C++ 中 stack 类型

#include
stacks;
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
queueq;
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代码截图(注意,截图,截图,截图。不要粘贴博客上。)

DS博客作业02--栈和队列_第3张图片
DS博客作业02--栈和队列_第4张图片
DS博客作业02--栈和队列_第5张图片
DS博客作业02--栈和队列_第6张图片
DS博客作业02--栈和队列_第7张图片

2.1.2本题PTA提交列表说明。

DS博客作业02--栈和队列_第8张图片
部分正确是因为乘除和括号没弄好。
格式错误 是因为第一个符号为括号的时候
输出 前面会多一个空格,利用flag 就解决空格的输出问题
修改后就对了。

2.2.题目2:题目名称

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

DS博客作业02--栈和队列_第9张图片
DS博客作业02--栈和队列_第10张图片
DS博客作业02--栈和队列_第11张图片
DS博客作业02--栈和队列_第12张图片

2.2.2本题PTA提交列表说明。

DS博客作业02--栈和队列_第13张图片
部分正确 是在因为/* 我用<代替入栈,忘记字符串要往下两位。要i++;
改正后就对了,麻烦主要在 要自己造测数据,自己找错。

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

3.1 题目及解题代码

DS博客作业02--栈和队列_第14张图片
DS博客作业02--栈和队列_第15张图片

3.1.1 该题的设计思路

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

3.1.2 该题的伪代码

if(k==1)直接输出
if(k>=2)
{ 
for(i=1;i

3.1.3 运行结果

DS博客作业02--栈和队列_第16张图片

你可能感兴趣的:(DS博客作业02--栈和队列)