zoukankan      html  css  js  c++  java
  • 【校招面试 之 剑指offer】第9-1题 用两个栈实现一个队列

    #include<iostream>
    #include<stack>
    using namespace std;
    
    template <typename T>
    void pushQueue(stack<T> &stack1, T t){
    	stack1.push(t);
    }
    
    template<typename T>
    T  popQueue(stack<T> &stack1, stack<T> &stack2){
    	// 先将stack1倒到stack2中
    	while(!stack1.empty()){
    		stack2.push(stack1.top());
    		stack1.pop();
    	}
    
    	// 然后取出stack2中的栈顶元素
    	T targetNum = stack2.top();
    	stack2.pop();
    
    	// 将stack2中的元素倒回到stack1中(为了下次再做操作(入队或者出对只对stack1操作))
    	while(!stack2.empty()){
    		stack1.push(stack2.top());
    		stack2.pop();
    	}
    	return targetNum;
    }
    
    // 输出
    template <typename T>
    void printStack1(stack<T> &stack1){
    	while(!stack1.empty()){
    		cout<<stack1.top()<<" ";
    		stack1.pop();
    	}
    }
    int main(){
    	
    	stack<int> stack1;
    	stack<int> stack2;
    	// 1.入队操作
    	pushQueue(stack1, 100);
    	pushQueue(stack1, 200);
    
    	//2.出队操作
    	cout<<popQueue(stack1, stack2)<<endl;
    	// 3.打印验证
    	pushQueue(stack1, 300);
    	printStack1(stack1);
    	system("pause");
    	return 0;
    }
    

  • 相关阅读:

    入门动态规划问题
    AC自动机
    KMP算法
    [OpenGL]用鼠标拖拽图形移动
    HDU-2222 Keywords Search
    Trie
    Manacher算法
    linux环境搭建
    Android Studio使用JNI和NDK进行开发
  • 原文地址:https://www.cnblogs.com/xuelisheng/p/9356962.html
Copyright © 2011-2022 走看看