c++stack用法
时间: 2023-10-28 14:07:12 浏览: 183
C++中的stack是一个容器适配器,它基于deque实现。stack的最大特点是先进后出(后进先出),也就是说,先放入stack容器的元素一定要先等比它后进入的元素出去后它才能出去。下面是一些常用的stack方法:
1. push(element):将元素element压入栈顶。
2. pop():弹出栈顶元素。
3. top():返回栈顶元素。
4. empty():判断栈是否为空。
5. size():返回栈中元素的个数。
下面是一个简单的例子,演示了如何使用stack:
```
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> s; // 定义一个int类型的stack
s.push(1); // 向栈中压入元素1
s.push(2); // 向栈中压入元素2
s.push(3); // 向栈中压入元素3
s.push(4); // 向栈中压入元素4
while (!s.empty()) {
cout << s.top() << " "; // 输出栈顶元素
s.pop(); // 弹出栈顶元素
}
return 0;
}
```
输出结果为:4 3 2 1。
相关问题
C++ stack用法
在C++中,标准库提供了一个名为`std::stack`的数据结构,它是STL(Standard Template Library)的一部分,用于处理栈的行为。`std::stack`模板支持动态大小调整,可以存储不同类型的数据,通常基于`std::deque`(双端队列)底层实现。
以下是`std::stack`的一些基本用法:
1. 创建栈:
```cpp
#include <stack>
std::stack<int> myStack;
```
这里创建了一个只包含整数的空栈。
2. 压栈(push):
```cpp
myStack.push(5);
```
向栈顶添加元素5。
3. 弹栈(pop):
```cpp
int topValue = myStack.top(); // 获取栈顶元素
myStack.pop(); // 删除并返回栈顶元素
```
`top()`方法获取栈顶元素,`pop()`方法则移除并丢弃栈顶元素。
4. 检查栈是否为空:
```cpp
bool isEmpty = myStack.empty(); // 返回true如果栈为空
```
5. 查看栈顶元素但不删除:
```cpp
int peekValue = myStack.top(); // 只查看栈顶元素,不会改变栈的状态
```
6. 遍历栈:
```cpp
while (!myStack.empty()) {
std::cout << myStack.top() << " ";
myStack.pop();
}
```
这将打印出栈中的所有元素,直到栈变为空。
c++ stack用法
栈(Stack)是一种线性数据结构,其特点是先进后出(Last In First Out,LIFO)。栈可以用数组或链表实现。在C语言中,可以使用数组来实现栈。
栈的主要操作包括压栈(push)、弹栈(pop)和取栈顶元素(top)。在使用栈时,需要先定义一个栈的结构体,包含栈的容量、栈顶指针和存储元素的数组等信息。然后根据需要使用相应的操作来对栈进行操作。
以下是一个使用数组实现栈的示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE]; // 存储元素的数组
int top; // 栈顶指针
} Stack;
void initStack(Stack *stack)
{
stack->top = -1; // 初始时栈顶指针为-1
}
int isEmpty(Stack *stack)
{
return stack->top == -1;
}
void push(Stack *stack, int value)
{
if (stack->top < MAX_SIZE - 1) { // 判断栈是否已满
stack->top++;
stack->data[stack->top] = value; // 元素入栈
}
}
int pop(Stack *stack)
{
int value = -1; // 初始值为-1,表示栈为空
if (!isEmpty(stack)) {
value = stack->data[stack->top]; // 取出栈顶元素
stack->top--; // 栈顶指针下移
}
return value;
}
int top(Stack *stack)
{
int value = -1; // 初始值为-1,表示栈为空
if (!isEmpty(stack)) {
value = stack->data[stack->top]; // 取出栈顶元素
}
return value;
}
int main()
{
Stack stack;
initStack(&stack);
push(&stack, 1);
push(&stack, 2);
push(&stack, 3);
printf("Top element: %d\n", top(&stack)); // 输出栈顶元素
while (!isEmpty(&stack)) {
int value = pop(&stack);
printf("%d ", value); // 依次输出栈中元素
}
printf("\n");
return 0;
}
```
以上代码实现了栈的初始化、判断是否为空、压栈、弹栈和取栈顶元素等基本操作。在使用栈时,需要注意栈的容量和栈顶指针的变化。
阅读全文