栈和队列的基本操作
时间: 2024-05-23 19:07:24 浏览: 12
栈和队列是两种常见的数据结构,它们都可以用来管理数据集合,但是它们的内部操作和使用方式有所不同。
栈是一种后进先出(LIFO)的数据结构,它的基本操作包括压栈(push)、弹栈(pop)、取栈顶元素(top)和判断是否为空(empty)。压栈就是将一个元素放到栈顶,弹栈就是将栈顶元素取出来并从栈中删除,取栈顶元素就是返回栈顶元素的值,而判断是否为空就是判断栈中是否还有元素。
队列是一种先进先出(FIFO)的数据结构,它的基本操作包括入队(enqueue)、出队(dequeue)、取队首元素(front)和判断是否为空(empty)。入队就是将一个元素放到队尾,出队就是将队首元素取出来并从队列中删除,取队首元素就是返回队首元素的值,而判断是否为空就是判断队列中是否还有元素。
相关问题
数据结构栈和队列基本操作
栈(Stack)和队列(Queue)是两种基本的数据结构。它们都是线性结构,但它们的操作方式有所不同。
栈的基本操作有:
1. push(item):将元素压入栈顶。
2. pop():将栈顶元素弹出。
3. top():返回栈顶元素,但不弹出它。
4. isEmpty():检查栈是否为空。
队列的基本操作有:
1. enqueue(item):将元素插入队尾。
2. dequeue():将队头元素删除。
3. front():返回队头元素,但不删除它。
4. isEmpty():检查队列是否为空。
需要注意的是,栈和队列的操作都是在其顶部进行的,因此它们也被称为LIFO(后进先出)和FIFO(先进先出)数据结构。
栈和队列的基本操作c++
以下是C++中栈和队列的基本操作:
栈的基本操作:
1.创建栈:stack<int> s;
2.入栈:s.push(元素);
3.出栈:s.pop();
4.取栈顶元素:s.top();
5.判断栈是否为空:s.empty();
6.获取栈的大小:s.size();
队列的基本操作:
1.创建队列:queue<int> q;
2.入队:q.push(元素);
3.出队:q.pop();
4.取队头元素:q.front();
5.取队尾元素:q.back();
6.判断队列是否为空:q.empty();
7.获取队列的大小:q.size();
以下是一个使用栈求进制转换的例子:
```c++
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> s;
int num, base;
cout << "请输入一个十进制数:";
cin >> num;
cout << "请输入要转换的进制:";
cin >> base;
while (num) {
s.push(num % base);
num /= base;
}
cout << "转换后的结果为:";
while (!s.empty()) {
cout << s.top();
s.pop();
}
cout << endl;
return 0;
}
```
以下是一个使用队列打印杨辉三角形的例子:
```c++
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n;
cout << "请输入要打印的行数:";
cin >> n;
queue<int> q;
q.push(1);
for (int i = 1; i <= n; i++) {
int pre = 0;
for (int j = 0; j < i; j++) {
int cur = q.front();
q.pop();
cout << cur - pre << " ";
pre = cur;
q.push(cur + pre);
}
q.push(1);
cout << endl;
}
return 0;
}
```
以下是一个使用栈计算后缀表达式的例子:
```c++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
string s;
cout << "请输入后缀表达式:";
getline(cin, s);
stack<int> nums;
for (int i = 0; i < s.size(); i++) {
if (s[i] == ' ') continue;
if (isdigit(s[i])) {
int num = 0;
while (i < s.size() && isdigit(s[i])) {
num = num * 10 + s[i] - '0';
i++;
}
nums.push(num);
i--;
} else {
int b = nums.top();
nums.pop();
int a = nums.top();
nums.pop();
switch (s[i]) {
case '+': nums.push(a + b); break;
case '-': nums.push(a - b); break;
case '*': nums.push(a * b); break;
case '/': nums.push(a / b); break;
}
}
}
cout << "计算结果为:" << nums.top() << endl;
return 0;
}
```
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)