c++ stack用法
时间: 2023-10-16 07:29:34 浏览: 144
c++stack_和_queue用法
4星 · 用户满意度95%
栈(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;
}
```
以上代码实现了栈的初始化、判断是否为空、压栈、弹栈和取栈顶元素等基本操作。在使用栈时,需要注意栈的容量和栈顶指针的变化。
阅读全文