9 solutions

  • 3
    @ 2022-1-1 23:54:14

    一开始提交只过了两个样例然后发现stack在下一次循环中时没有初始化导致错误 每次都重新定义stack即可

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	std::ios::sync_with_stdio(false);
    	int n;
    	cin>>n;
    	while(n--){
    		stack<int> pp;
    		int l;
    		cin>>l;
    		for(int c=0;c<l;c++){
    			string a;
    			cin>>a;
    			string::iterator it=a.begin();
    			if(*(++it)=='o'){
    				if(pp.empty()){
    					cout<<"Empty"<<endl;
    				}else{
    					cout<<pp.top()<<endl;
    					pp.pop();
    				}
    			}else if(*(it)=='u'){
    				int a;
    				cin>>a;
    				pp.push(a);
    			}
    		}
    	}
    	return 0;
    }
    

    附带string的遍历方法 下标法:

     for( int i = 0; i < a.size() ; i++ )
        {
            cout<<a[i];
        }
        cout<<endl;
    

    迭代器:

       string::iterator iter = a.begin();
        for( ; iter < a.end() ; iter++)
        {
            cout<<*iter;
        }
        cout<<endl;
    
    • @ 2022-1-4 18:50:17

      %%%%%%%%%%%%%%%%%%%

  • 2
    @ 2022-1-1 21:42:22

    利用字符串比对来确定需要进行的操作,stack没有clear清空,所以直接在循环的时候重新创建栈,达到重置的效果

    #include <bits/stdc++.h>
    using namespace std;
    
    string a="pop",b="push";
    int main(){
        int t,n,temp;
        cin>>t;
    while(t--)
    {
    	cin>>n;
    	stack <int> s;
    	while(n--)
    	{
    		string c;
    		cin>>c;
    		if(c==a)
    		{
    			if(s.empty()) cout<<"Empty"<<endl;
    			else 
    			{
    			cout<<s.top()<<endl;	
    			s.pop();
    		    }
    		}
    		else if(c==b)
    		{
    			cin>>temp;
    			s.push(temp);
    		} 	
    	}
    }    
        
        return 0;
    }
    
    • 1
      @ 2022-1-2 1:05:36
      #include<bits/stdc++.h>
      using namespace std;
      stack <int> s;
      int main(){
      	int t;
      	cin>>t;
      	for(int j=0;j<t;j++){
      		int n;
      		cin>>n;
      		string zl;
      		int x;
      		for(int i=0;i<n;i++){
      			cin>>zl;//这里不能和x一起输入需要判断后分开输入
      			if(zl=="pop"){
      				if(!s.empty()){
      					cout<<s.top()<<endl;
      					s.pop();
      				}
      				else{
      					cout<<"Empty"<<endl;
      				}
      			}
      			else if(zl=="push"){
      				cin>>x; 
      				s.push(x);
      			}
      		}
      		while(!s.empty()){//清空栈
      			s.pop();
      		}
      	}
      	
      	
      	return 0;
      }
      
      • 0
        @ 2022-1-2 11:48:14

        这是一道普通的栈,但是是t组输入,记得要把上一个栈清空

        #include<bits/stdc++.h>
        typedef long long ll;
        using namespace std;	
        string s;//依旧用string,方便;
        int a[100010];
        int main()
        {
        	int t;
        	cin>>t;
        	stack <int> q;
        	while(t--)
        	{
        		int n;
        		cin>>n;
        		for(int i=0;i<n;i++)
        		{
        			cin>>s;
        			if(s=="pop")
        			{
        				if(q.empty()) cout<<"Empty"<<endl;
        				else {
        					cout<<q.top()<<endl;
        					q.pop();
        				}
        			}
        			if(s=="push")
        			{
        				int x;
        				cin>>x;
        				q.push(x);
        			}
        		} 
        		while(!q.empty())//栈的清空,也可以用clear;
        		{
        			q.pop();
        		}
        	}
        	return 0;
        }
        
        • 0
          @ 2022-1-2 10:27:42
          #include <iostream>
          #include <cstring>
          #include <stack>
          using namespace std;
          int main()
          {
          	
          	int t,n,b;
          	cin>>t;
          	while(t--)
          	{
          	cin>>n;
          	stack<int>a;
          	while(n--)
          	{
          		char s[20];
          		cin>>s;
          		if(!strcmp(s,"pop"))//将字符串匹配,符合就进行下列操作
          		{
          			if(a.empty()) cout<<"Empty"<<endl;//先判断它是否为空,空就按题目要求输出
          			else 
          			{
          				cout<<a.top()<<endl;//否则就输出出栈元素
          				a.pop();//同时删除
          			} 
          		}
          		else if(!strcmp(s,"push"))//匹配就直接入栈
          		{
          			cin>>b;
          			a.push(b);
          		}	
          	}
          	}
          	return 0;
          }
          
          • 0
            @ 2022-1-1 23:54:44

            我是蒟蒻1111

            #include<bits/stdc++.h>
            using namespace std;
            int main()
            {
            	int n;
            	string wuhu;
            	cin>>n;
            	while(n--)
            	{
            		stack<int> s;
            		int m,n;
            		cin>>m;
            		for(int i=1;i<=m;i++)
            		{
            			cin>>wuhu;
            			if(wuhu=="pop")
            			{
            				if(s.empty())
            				cout<<"Empty"<<endl;
            				else{
            					cout<<s.top()<<endl;//先入后出 
            					s.pop(); //记得弹出 
            				}
            			}
            			else
            			{
            				int a;
            				cin>>a;
            				s.push(a);
            			 } 
            	}
            }
            	return 0;
            }
            
            • 0
              @ 2022-1-1 23:48:24
              #include <bits/stdc++.h>
              using namespace std;
              char a[5]="pop",b[5]="push";
              int n,m,k;
              int main()
              {
              	std::ios::sync_with_stdio(false);
              	cin>>n;
              	while(n--)
              	{
              		cin>>m;
              		stack<int> s;
              		while(m--)
              		{
              			string c;
              			cin>>c;
              			if(c==a)
              			{
              				if(s.empty())
              				{
              					cout<<"Empty"<<"\n";
              				}
              				else
              				{
              					cout<<s.top()<<"\n";
              					s.pop();
              				}
              			}
              			else//这里不能写成 if(c==b) 卡了我一下 
              			{
              				cin>>k;
              				s.push(k);
              			}
              		}
              	}
              	return 0;
              }
              
              • 0
                @ 2022-1-1 23:24:00

                按栈的操作就好

                #include<bits/stdc++.h>
                using namespace std;
                int t,n,x;
                char num[15];
                int main()
                {
                	std::ios::sync_with_stdio(false);
                	cin>>t;
                	while(t--)
                	{
                		stack<int> st;
                		cin>>n;
                		while(n--)
                		{
                			cin>>num;
                			if(num[1]=='o')
                				if(st.size()==0)
                					cout<<"Empty"<<endl;
                				else{
                					cout<<st.top()<<endl;
                					st.pop();
                				}
                			else{
                				cin>>x;
                				st.push(x);
                			}
                		}
                	}
                	return 0;
                }
                
                • 0
                  @ 2022-1-1 23:01:59

                  那个啥,strack是我向大佬学的,先前我用queue做不出来,实在没法了

                  #include<iostream>
                  #include<queue>
                  #include<string.h>
                  #include<stack>
                  using namespace std;
                  int main()
                  {
                  	char x[5]="pop",y[5]="push";
                  	char a[5]; 
                  	int T;
                  	scanf("%d",&T);
                  	while(T--)
                  	{
                  		int n;
                  		scanf("%d",&n);
                  		stack <int> num;
                  		while(n--){
                          scanf("%s",a);
                          if(strcmp(a,x)==0){
                          	if(num.size()==0)printf("Empty\n");
                  			else {
                  			cout<<num.top()<<endl;
                  			num.pop();
                  		}
                  		}
                  		if(strcmp(a,y)==0){
                  			int b;
                  			scanf("%d\n",&b);
                  			num.push(b);
                  		}
                  		memset(a,0,sizeof(a));
                  	}
                  	}
                  	return 0;
                  }
                  
                  • 1

                  Information

                  ID
                  330
                  Time
                  1000ms
                  Memory
                  256MiB
                  Difficulty
                  2
                  Tags
                  # Submissions
                  152
                  Accepted
                  48
                  Uploaded By