精华内容
下载资源
问答
  • 数据结构中栈的操作,输入与输出,可以正常运行
  • 队列与栈的输入输出

    2015-12-29 23:21:00
    下面程序演示了队列FIFO和LIFO行为 // fifolifo.cpp : 定义控制台应用程序入口点。 // #include "stdafx.h" #include <iostream> #include <string> #include <queue> #include ...

    下面程序演示了队列FIFO和栈LIFO的行为

    // fifolifo.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    #include <queue>
    #include <stack>
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        cout << "FIFO order: \n";
        queue<string> q;        //队列q
        q.push("Tom");
        q.push("Dick");
        q.push("Harry");
    
        stack<string> s;        //栈s
        while (q.size() > 0)
        {
            string name = q.front();
            q.pop();
            cout << name << "\n";
            s.push(name);
        }
        cout << "LIFO order:\n";
        
        while (s.size() > 0)
        {
            cout << s.top() << "\n";
            s.pop();
        }
        system("pause");
        return 0;
    }

    转载于:https://www.cnblogs.com/david-zhao/p/5087444.html

    展开全文
  • //数字字符串连接 int operate(int n1,char o,int n2,int &flag);//运算 /* flag为一个标志变量, 1为表达式有误!除数为0! 2为表达式值过大或过小 3为未知类型错误,可能没有这一点 但为了容错,还是要加上...
  • 栈的规则是先进后出(输出5,4,3,2,1,),而队列的规则是先进先出(输出还是1,2,3,4,5)。 那么我们如何实现栈和队列的相互转化呢? 1.两个栈表示一个队列 两个栈想要表示一个队列对于一维数组的操作方式,...

    我们都知道一维数组可以在栈和队列中进行存入和取出操作,并且由于各自的特殊性,同样的数列(1,2,3,4,5)进入栈或进入队列后,他们的输出序列是不一样的。栈的规则是先进后出(输出5,4,3,2,1,),而队列的规则是先进先出(输出还是1,2,3,4,5)。
    那么我们如何实现栈和队列的相互转化呢?

    1.两个栈表示一个队列

    两个栈想要表示一个队列对于一维数组的操作方式,只需要进行两次压入栈和弹出栈的操作即可。即((1,2,3,4,5)入栈1,出栈1为(5,4,3,2,1,),在入栈2,出栈2为(1,2,3,4,5))
    图解如下:
    在这里插入图片描述
    具体的代码实现为:

        public  static <T> void twoStackToOneQueue(T[] arr){
            Stack<T> str1=new Stack<>();
            Stack<T> str2=new Stack<>();
            for(int i=0;i<arr.length;i++){
                str1.push(arr[i]);
            }
            while(!str1.isEmpty()){
                str2.push(str1.peek());
                str1.pop();
            }
            while(!str2.isEmpty()){
                System.out.println(str2.peek()+"");
                str2.pop();
                }
            }
        public static void main(String args[]) {
            twoStackToOneQueue(new Integer[]{1, 2, 3, 4, 5, 6});
        }
        }
    

    2.两个队列表示一个栈

    两个队列想要表示一个栈,这里需要用到在两个队列间循环入队出队的操作,由于队列先入先出的性质,每次只需要将队列的最后一个元素弹出,就可以反向实现输出序列的效果,即(1,2,3,4,5)——>(5,4,3,2,1,)
    图解如下:
    在这里插入图片描述
    具体的代码实现为:

        public static<T> void twoQueueToOneStack(T[] arr) {
            MyQueue<T> queue1 = new MyQueue<>();
            MyQueue<T> queue2 = new MyQueue<>();
            for (int i = 0; i < arr.length; i++) {
                queue1.push(arr[i]);
            }
            int scrLength = arr.length;
            while (scrLength > 0) {
                while (queue1.size() > 1) {
                    queue2.push(queue1.peek());
                    queue1.pop();
                }
                System.out.println(queue1.peek() + " ");
                queue1.pop();
                scrLength--;
    
                if (scrLength != 0) {
                    while (queue2.size() > 1) {
                        queue1.push(queue2.peek());
                        queue2.pop();
                    }
                    System.out.println(queue2.peek() + " ");
                    queue2.pop();
                    scrLength--;
    
                }
    
            }
        }
        public static void main(String[]args){
            twoQueueToOneStack(new Integer []{1,2,3,4,5,6});
        }
    }
    

    如有错误的地方,请您不吝赐教!

    展开全文
  • 设计算法以判断对输入序列1,2,3,…,n,序列 a1,a2,…,an 是否是该栈的合法输出序列。 思路 这里的“顺序”指输入序列的顺序。 判断合法栈的输出序列方法:对于相邻的两个数a1,a2,如果为升序,则记录下顺序小于a2...

    题目

    设计算法以判断对输入序列1,2,3,…,n,序列 a1,a2,…,an 是否是该栈的合法输出序列。

    思路

    这里的“顺序”指输入序列的顺序。
    判断合法栈的输出序列方法:对于相邻的两个数a1,a2,如果为升序,则记录下顺序小于a2而不等于a1,a2的数,压栈;如果为降序,则将a2与栈顶数进行比较,如果相等,则该部分正确;如果不相等,则整个序列错误。

    代码

    #include <iostream>
    using namespace std;
    
    const int maxlen = 100;
    class Stack {
    public:
    	Stack();
    	bool full() const;
    	bool empty() const;
    	void push(int x);
    	int top()const;
    	void pop();
    private:
    	int count;
    	int data[maxlen];
    };
    Stack::Stack() {
    	count = 0;
    }
    bool Stack::full()const {
    	return count == maxlen-1;
    }
    bool Stack::empty()const {
    	return count == 0;
    }
    void Stack::push(int x) {
    	if ( full()) cout<<"Overflow";
    	else {
    		data[count] = x;
    		count++;
    	}
    }
    int Stack::top()const {
    	if (empty())return UNDERFLOW;
    	else return data[count - 1];
    }
    void Stack::pop() {
    	if (empty())cout<<"Underflow";
    	else count -= 1;
    }
    
    int main() {
    	int size;
    	cin >> size;
    	int a[maxlen];
    	int x;
    	for (int i = 0; i < size; i++) {
    		cin >> x;
    		a[i] = x;
    	}
    	Stack q;
    	int c=0;
    	int flag = 0;
    	for (int i = 1; i < size+1; i++) {
    		if (i == a[c]) {
    			c++;
    			if (a[c] < a[c -1]) {
    				c++;
    				int top = q.top();
    				if (a[c-1] == top) {
    					q.pop();
    					continue;
    				}
    				else {
    					cout << "wrong sequence";
    					flag = 1;
    					break;
    				}
    			}
    			else continue;
    		}
    		q.push(i);
    	}
    	if (flag == 0)cout << "correct sequence";
    	return 0;
    }
    

    如果有错误请大佬指出!感谢!

    展开全文
  • 输入序列1、2、3、…、n经过作用后,输出序列中第一个元素是n,则输出序列中第i个输出元素是:1+(n-i) 分析过程如图:(这里将 n 值取 5,i值 取2) 倒序元素i正序元素n-1相互对应。 由图分析得出,...

    设输入序列1、2、3、…、n经过栈作用后,输出序列中的第一个元素是n,则输出序列中的第i个输出元素是:1+(n-i)
    分析过程如图:(这里将 n 值取 5,i值 取2)

    倒序的元素i与正序的元素n-1相互对应。
    由图分析得出,出栈后,逆序排列,第n个元素与第i个元素的值之间相差(n-i),故正序1加上相差的(n-i)就是出栈时第i个元素的值。

    展开全文
  • 判断输入序列是否是合法的栈输出序列 问题描述: 已知自然数1,2,…,N(1≤N≤10000)依次入栈(即a<b当且仅当a先于b入栈),请设计算法判断输入序列C1,C2,…,CN是否为可能出栈序列。 例如:N=5 时,3,4,2,1,5是一...
  • 队列与栈的概念 解题思路 stack1表示入队列,stack2表示出队列。 完整代码 /*05_stacktoqueue*/ #include<iostream> #include<stack> using namespace std; class Solution { public: void push(int ...
  • b当且仅当a先于b入栈),请设计算法判断输入序列C1,C2,…,CN是否为可能出栈序列。 例如:N=5 时,3,4,2,1,5是一个可能出栈序列,因为其可以按如下操作获得: push 1, push 2, push 3, pop, push 4, pop, pop, ...
  • 1.头文件 ==#include<bits/stdc++.h> //一键包括所有 #include<iostream> //必须要有 #include<stack> //用到 #include<...sort()这样函数 ...2.输入与输出 1.两个数 a b int a,b;
  • 异常与输入输出

    2020-05-07 16:02:26
    下面程序定义类模板StackTemplate,创建对象存储斐波那契数列前10项数值,并以后进先出方式取出元素并输出输出结果为:55 34 21 13 8 5 3 2 1 1。其中void push(const T& i)函数为添加元素、T pop()...
  • 如果输入序列字符和输出目标序列对应不相等,则让其一直入栈,碰到相等情况就目标序列下标后移一位,输入序列下标也后移一位,然后再让后移一位的输出目标序列字符栈顶比较,如果它相等不在栈顶则一定...
  • 栈与队列相互实现

    2021-04-09 10:27:56
    用两个来模拟队列的输入输出操作,一个输入,一个输出栈。注意代码的复用 class MyQueue { Stack<Integer> s1; //输入 Stack<Integer> s2; //输出栈 /** Initialize your data structure here....
  • 1060-合法栈输出

    2020-09-20 17:57:16
    题目: 1060-合法栈输出 分析: ...用DFS(递归)和回溯法来遍历所有进栈出栈情况,具体如下:如上图在a队列数据1向b栈输入后,这个数据有两种选择:选择一,直接出栈进入c队列;选择二,继续留在b
  • 采用顺序存储,试编写程序实现将表达式转换成后缀表达式输出。 例如,输入表达式: a+b/c-(d*e+f)*g 输出其后缀表达式:abc/+de*f+g*- 分析: 将表达式转化为后缀表达式思想为:输入表达式,遇到数字或 ...
  • PTA 异常与输入输出

    2020-05-08 17:16:07
    下面程序定义类模板StackTemplate,创建对象存储斐波那契数列前10项数值,并以后进先出方式取出元素并输出输出结果为:55 34 21 13 8 5 3 2 1 1。其中void push(const T& i)函数为添加元素、T pop()...
  • 栈与队列应用

    2015-12-05 22:51:11
    实验名称:栈与队列应用 实验目的:通过实验理解和队列应用 实验内容: 1、输入10个数,并按输入顺序入队,然后将它们逐个出队并输出。 2、输入一串字符,以#结束,利用和队列来判断它是否是回文。 3、...
  • 单调栈的理解应用

    2020-02-22 17:45:09
    给定一个循环数组(最后一个元素下一个元素是数组第一个元素),输出每个元素下一个更大元素。数字 x 下一个更大元素是按数组遍历顺序,这个数字之后第一个比它更大数,这意味着你应该循环地搜索它...
  • abcde 例2栈的输入序列为abcdef则不可能的输出序列有 aedfbc;顺序栈 ? 用向量作为存储结构可用一维数组s[1:m] 表示 m栈的最大容量 Top栈顶指示器top=0栈空top=m栈满? 插入进栈先令top加1再将元素送入s[top]中当t
  • 1.继承:1&gt;子类继承父类 就继承父类共有成员方法2&gt;如果子类中有和父类同名...值类型再中引用类型数据再内存堆中 而中保存了引用类型数据在堆中地址2&gt;值类型继承自System.valueT...
  • 栈的链式存储结构操作 题目编号:458 题目要求: 请你定义一个链栈,可以对链栈进行 “将某个元素入栈”、“弹出栈顶元素”、“取栈顶元素(不删除)”、“判断栈是否为空”、 “清空栈”等操作。键盘输入一些命令...
  • 一、堆栈基本概念 堆栈(也简称作)是一种特殊线性表,堆栈数据元素以及数据元素间逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和...从输入输出数据元素位置关系看,堆栈功能和
  • 此代码可以正常运行,下附有运行区,是实实在在类C语言 #include <stdio.h> #include <stdlib.h> #include<string.h> #define MAXSIZE 100 enum Status{ERROR,OK}; typedef int ElemType; ...
  • 了解定义实现,学习其使用方法; 了解队列类定义实现,学习其使用方法; 了解C++标准模板库STL使用方法。 熟悉流类库中常用类及其成员函数用法。 学习标准输入输出及格式控制; 学习对文件应用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,660
精华内容 664
关键字:

栈的输入与输出