1.学习总结
2.PTA实验作业
2.1题目一:7-2 jmu-字符串是否对称
2.2设计思路
对称函数
int symmetry(ElementType str[])
{
定义指针变量s,并初始化;
定义变量i,e;
for(字符串没有结束时)
入栈;
for(字符串没有结束时)
{
出栈;
if(str[i]!=e){
销毁s;
}
}
销毁s;
}
2.3代码截图
2.4PTA提交列表说明
第一次提交时,用的C提交的,导致编译错误;
第二次提交,pop函数里的参数e没有加引用符,导致一直只能输出no,后加上引用符就可以了。
2.1题目二:7-2 符号配对
2.2设计思路
配对函数
bool Match(Stack &s)
{
定义变量 i = 0;
定义字符串数组str;
定义变量match,赋值为true;
while(字符串没有结束时)){
if(遇到.和 ) 结束;
for(字符串没有结束时){
if(str[i] == '(' || str[i] == '[' || str[i] == '{')
入栈;
if(str[i] == '/' && str[i+1] == '*'){
入栈2次;
i加2;
}
if(str[i] == ')'){
if(GetTop(s) == '(' && !StackEmpty(s))
出栈;
else{
结束, match赋值为false;
}
}
if(str[i] == ']'){
if(GetTop(s) == '[' && !StackEmpty(s))
出栈;
else{
结束, match赋值为false;
}
}
if(str[i] == '}'){
if(GetTop(s) == '{' && !StackEmpty(s))
出栈;
else{
结束, match赋值为false;
}
}
if(str[i] == '*' && str[i+1] == '/'){
if(GetTop(s) == '*' && !StackEmpty(s)){
出栈;
if(GetTop(s) == '/' && !StackEmpty(s))
出栈;
else{
结束, match赋值为false;
}
}
else{
结束
}
}
}
}
if(s不为空)
match赋值为false;
销毁s;
return match;
}
2.3代码截图
2.4PTA提交列表说明
因为没有记录右符号,所以无法准确判断,所以我就加了个全局变量,用来存储右符号。
2.1题目三:7-2 银行业务队列简单模拟
2.2设计思路
主函数
int main(){
定义队列queue变量
定义变量n, i, j, e;
for( i=0; i<n; i++){
输入e;
if(e是偶数) 入队A;
else 入队B;
}
for( i=0; i<n; i++){
j赋值为0;
while( j<2){
j加1;
if( A不为空){
出队;
输出A;
}
}
if( B不为空){
出队;
输出B;
}
}
return 0;
}
2.3代码截图
2.4PTA提交列表说明
在while循环外面没有把j赋值为0,导致A队列只能输出前两个数;后在while循环外面加上j=0就可以了。
3.截图本周题目集的PTA最后排名
3.1栈PTA排名
3.2队列PTA排名
3.3我的总分:230
4. 阅读代码
4.1代码地址:https://gitee.com/wuyichengbi/codes/34j8wb6hlz0dpyrakeno299
4.2代码解析:
#include<cstdio>
#include<stack>
using namespace std;
const int maxn=1000+10;
int n,target[maxn];
int main()
{
while(scanf("%d",&n)==1)
{
stack<int> s;
int A=1,B=1;
for (int i=1;i<=n;i++) //输入目标序列
scanf("%d",&target[i]);
int ok=1;
while (B<=n)
{
if (A==target[B]) //”此时“B的值与目标序列是"此时"值相等,显然直接进栈出栈解决问题,两者下标都往后移
{
A++;
B++;
}
else if (!s.empty()&&s.top()==target[B])
{ //如果栈顶元素与目标序列是"此时"值相等, 栈顶元素出栈解决问题
s.pop();
B++;
}
else if (A<=n) //如果还有可进栈元素,将其进栈
s.push(A++);
else
{ //该目标序列不可得到
ok=0;
break;
}
}
printf("%s
",ok ? "Yes" : "No");
}
return 0;
}