21xrx.com
2024-11-22 05:27:27 Friday
登录
文章检索 我的文章 写文章
C++ 栈实现判断出队顺序的正确性代码
2023-07-13 22:53:43 深夜i     --     --
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++语言实现栈来判断出队顺序的正确性。在实际编程中,我们可以根据需要进行适当的修改,以达到相应的需求。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复