21xrx.com
2024-11-22 02:57:02 Friday
登录
文章检索 我的文章 写文章
C++中的栈和队列:基础数据结构的实现及应用
2023-07-04 12:43:33 深夜i     --     --
C++ 队列 基础数据结构 实现 应用

栈和队列是C++中最基础的数据结构之一,它们在程序设计中的应用非常广泛。

栈是一种先进后出 (LIFO) 的数据结构,类似于一个装着物品的箱子,只有最上面一个物品可以被取出来。栈通常用于处理函数调用、表达式求值、括号匹配等问题。C++中可以使用STL中的stack模板来实现栈的操作,包括入栈(push)、出栈(pop)、是否为空(empty)等。

例如,我们可以使用stack来实现一个简单的括号匹配算法:


#include <iostream>

#include <stack>

using namespace std;

int main()

{

  string s = "{[()]}";

  stack<char> st;

  for (auto c : s)

  {

    if (c == '(' || c == '[' || c == '{')

      st.push(c);

    else

    {

      if (st.empty())

      

        cout << "不匹配" << endl;

        return 0;

      

      if ((c == ')' && st.top() == '(') ||

        (c == ']' && st.top() == '[') ||

        (c == '}' && st.top() == '{'))

        st.pop();

      else

      

        cout << "不匹配" << endl;

        return 0;

      

    }

  }

  if (st.empty())

    cout << "匹配" << endl;

  else

    cout << "不匹配" << endl;

  return 0;

}

队列是一种先进先出 (FIFO) 的数据结构,类似于排队等待服务的顾客。队列通常用于处理任务调度、消息传递、缓冲等问题。C++中可以使用STL中的queue模板来实现队列的操作,包括入队(push)、出队(pop)、是否为空(empty)等。

例如,我们可以使用queue来实现一个简单的任务调度算法:


#include <iostream>

#include <queue>

using namespace std;

int main()

{

  queue<int> q;

  q.push(1);

  q.push(2);

  q.push(3);

  while (!q.empty())

  {

    int x = q.front();

    q.pop();

    cout << x << " ";

  }

  cout << endl;

  return 0;

}

在实际程序设计中,栈和队列还可以和其他数据结构一起使用,比如栈可以和二叉树结合起来实现深度优先搜索,队列可以和图结合起来实现广度优先搜索。

总之,栈和队列是程序设计中非常重要的基础数据结构,掌握它们的应用可以让我们更好地处理实际问题。

  
  

评论区

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