21xrx.com
2025-03-11 02:33:21 Tuesday
文章检索 我的文章 写文章
C++ 栈实现判断出队顺序的正确性代码
2023-07-13 22:53:43 深夜i     16     0
C++ 出队顺序 正确性 代码

在编写程序时,我们经常需要使用到数据结构来解决问题。其中,栈是一种常用的数据结构,它的特点是后进先出。在实际编程中,我们需要判断出队的顺序是否正确,这就需要借助栈来实现。

下面是使用C++语言实现栈来判断出队顺序的正确性的代码:

#include <iostream>
#include <stack>
#include <vector>
using namespace std;
bool isPopOrder(vector<int>& push, vector<int>& pop) {
  stack<int> s;
  int index = 0;
  for (int i = 0; i < push.size(); i++) {
    s.push(push[i]);
    while (!s.empty() && s.top() == pop[index]) {
      s.pop();
      index++;
    }
  }
  return s.empty();
}
int main() {
  vector<int> push = 3;
  vector<int> pop = 4;
  bool result = isPopOrder(push, pop);
  if (result)
    cout << "出队顺序正确" << endl;
  
  else
    cout << "出队顺序错误" << endl;
  
  return 0;
}

在这段代码中,我们首先定义了两个vector,一个是入栈顺序push,一个是出栈顺序pop。然后我们定义一个bool类型的函数isPopOrder来判断出队顺序的正确性。

在isPopOrder函数中,我们首先定义了一个栈s和一个索引值index。随后我们使用for循环来遍历入栈顺序push,将每一个元素都入栈。在每个元素入栈后,我们需要判断栈顶元素是否和出栈顺序pop中的第index个元素相同,如果相同,则出栈。由于我们需要遍历入栈顺序push中的所有元素,因此我们需要在while循环中使用索引值index来遍历出栈顺序pop。在while循环执行完后,我们需要判断栈是否为空,如果为空,则说明出队顺序正确,返回true。如果不为空,则说明出队顺序错误,返回false。

最后,在main函数中,我们调用isPopOrder函数,并根据返回值来输出相应的结果。

通过这段代码,我们了解了如何使用C++语言实现栈来判断出队顺序的正确性。在实际编程中,我们可以根据需要进行适当的修改,以达到相应的需求。

  
  

评论区