定义顺序栈,实现初始化、置栈空、入栈、出栈、取栈顶元素等。
时间: 2024-10-28 11:06:55 浏览: 40
顺序栈是一种基于数组数据结构实现的线性表,其操作遵循先进后出(Last In First Out, LIFO)的原则。下面简要介绍如何实现基本的顺序栈操作:
1. 初始化 (Stack initialization):
- 创建一个固定大小的数组作为栈的数据结构,同时设置栈顶指针top为-1表示栈为空。
```c++
struct Stack {
int capacity;
int* data;
int top;
};
Stack* createStack(int size) {
Stack* stack = new Stack();
stack->capacity = size;
stack->data = new int[size];
stack->top = -1;
return stack;
}
```
2. 置栈空 (Clear the stack):
- 将栈顶指针top设为-1,表示栈内没有元素。
```c++
void clear(Stack* stack) {
stack->top = -1;
}
```
3. 入栈 (Push):
- 如果栈未满(top < capacity),将新元素放入数据区,并将top加一。
```c++
void push(Stack* stack, int value) {
if (stack->top < stack->capacity - 1) {
stack->data[++stack->top] = value;
} else {
printf("Stack overflow.\n");
}
}
```
4. 出栈 (Pop):
- 如果栈非空,弹出并返回栈顶元素,然后更新栈顶指针。若栈为空,则抛出异常。
```c++
int pop(Stack* stack) {
if (stack->top == -1) {
printf("Stack underflow.\n");
return -1; // 或者抛出异常
} else {
return stack->data[stack->top--];
}
}
```
5. 取栈顶元素 (Peek or Top without removing):
- 若栈非空,直接返回栈顶元素,不改变栈的状态。
```c++
int getTop(Stack* stack) {
if (stack->top != -1) {
return stack->data[stack->top];
} else {
printf("Stack is empty.\n");
return -1; // 或者抛出异常
}
}
```
阅读全文