• 03-栈和队列


    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;
    }
    

    4.3实现功能:使有n节车厢的的火车从A方向驶入,然后使其按特定的顺序进入B方向并驶出车站,可以借助中转站C。

    5. 代码Git提交记录截图

  • 相关阅读:
    高性能网络编程(七):到底什么是高并发?一文即懂!
    社交软件红包技术解密(十一):最全解密微信红包随机算法(含代码实现)
    sonar集成阿里p3c代码规范
    jenkins+sonar 持续集成检测代码质量
    JavaScript 利用零宽断言批量替换为注释符 // 后面加空格
    Git 合并时 submodule 冲突问题解决方法
    小程序 iphone X 1rpx 边框透明及不显示问题
    加快pip下载速度
    python中remove函数的坑
    Java程序运行内存机制
  • 原文地址:https://www.cnblogs.com/lixueting0904/p/8729498.html
Copyright © 2020-2023  润新知