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++)
循环找到剩余字母串中
最小的字母
移动到第一位
}