哪些动物可以做网站名,天津免费建站,你知道吗 网站,唐山做网站建设公司STL之stack 【栈】 头文件创建stack添加元素(插入元素)删除元素#xff08;弹出元素#xff09;访问元素检查栈是否为空#xff1a;获取栈的大小遍历C中stack用c语言实现栈 stack#xff1a;栈#xff0c;后进先出#xff08;LIFO#xff09;的数据结构。适用于需要在容… STL之stack 【栈】 头文件创建stack添加元素(插入元素)删除元素弹出元素访问元素检查栈是否为空获取栈的大小遍历C中stack用c语言实现栈 stack栈后进先出LIFO的数据结构。适用于需要在容器的末尾执行插入和删除操作的情况.
头文件
#include stack创建stack
std::stackint myStack; // 创建一个整数类型的栈添加元素(插入元素)
myStack.push(42);
myStack.push(17);删除元素弹出元素
myStack.pop(); // 弹出顶部元素访问元素
使用 top 函数访问栈的顶部元素但不会从栈中移除它
int topElement myStack.top(); // 访问栈顶部元素检查栈是否为空
if (myStack.empty()) {std::cout Stack is empty. std::endl;
} else {std::cout Stack is not empty. std::endl;
}获取栈的大小
size_t stackSize myStack.size(); // 获取栈的大小#include iostream
#include stackint main() {std::stackint myStack;myStack.push(42);myStack.push(17);int topElement myStack.top();std::cout Top element: topElement std::endl;myStack.pop();if (myStack.empty()) {std::cout Stack is empty. std::endl;} else {std::cout Stack is not empty. std::endl;}return 0;
}遍历C中stack
在C的STL中std::stack并没有提供公开的迭代器接口因此无法直接通过迭代器来遍历栈。实际上std::stack设计为在特定情况下隐藏了其底层容器的实现细节并且它的迭代器是被封装的无法直接访问。如果你需要遍历栈中的元素最好的方法是将栈的内容弹出到一个临时容器如std::vector或std::deque中然后使用该容器的迭代器进行遍历。
#include iostream
#include stack
#include vectorint main() {std::stackint myStack;myStack.push(10);myStack.push(20);myStack.push(30);// 将栈中的元素弹出并存储到vector中std::vectorint tempVector;while (!myStack.empty()) {tempVector.push_back(myStack.top());myStack.pop();}// 使用vector的迭代器从栈顶到栈底遍历std::cout Stack elements from top to bottom: ;for (auto it tempVector.rbegin(); it ! tempVector.rend(); it) {std::cout *it ;}std::cout std::endl;return 0;
}
用c语言实现栈
#include stdio.h
#include stdlib.h#define MAX_SIZE 100typedef struct {int arr[MAX_SIZE];int top;
} Stack;// 初始化栈
void initializeStack(Stack* stack) {stack-top -1;
}// 判断栈是否为空
int isEmpty(Stack* stack) {return stack-top -1;
}// 判断栈是否已满
int isFull(Stack* stack) {return stack-top MAX_SIZE - 1;
}// 入栈操作
void push(Stack* stack, int value) {if (isFull(stack)) {printf(Stack overflow\n);return;}stack-arr[(stack-top)] value;
}// 出栈操作
int pop(Stack* stack) {if (isEmpty(stack)) {printf(Stack underflow\n);return -1; // 表示栈为空}return stack-arr[(stack-top)--];
}// 获取栈顶元素不弹出
int peek(Stack* stack) {if (isEmpty(stack)) {printf(Stack is empty\n);return -1; // 表示栈为空}return stack-arr[stack-top];
}int main() {Stack myStack;initializeStack(myStack);push(myStack, 10);push(myStack, 20);push(myStack, 30);printf(Top element: %d\n, peek(myStack));printf(Popped element: %d\n, pop(myStack));printf(Popped element: %d\n, pop(myStack));printf(Top element: %d\n, peek(myStack));return 0;
}那么stack的用法就讲到这里下一章看multiset的用法。关注我为大家持续分享更多的内容让学习变得更简单与君共勉共同成长。