java顺序栈_顺序栈的基本操作(入栈和出栈)
时间: 2023-07-09 11:09:43 浏览: 155
顺序栈(Sequence Stack)是一种基于数组实现的栈结构,可以进行入栈和出栈操作,下面是它的基本操作:
1. 初始化栈:
首先需要定义一个数组和一个指针,数组用来存储栈中的元素,指针指向栈顶元素的下一个位置,初始时指针指向数组的第一个位置。具体实现如下:
```
#define MAXSIZE 100 // 定义栈的最大容量
typedef struct {
int data[MAXSIZE]; // 存储栈中的元素
int top; // 栈顶指针
} SeqStack;
void InitStack(SeqStack *S) {
S->top = 0; // 栈顶指针初始化为0
}
```
2. 判断栈是否为空:
判断栈是否为空,只需要判断栈顶指针是否为0,如果为0,则表示栈为空,否则栈中还有元素。具体实现如下:
```
bool StackEmpty(SeqStack S) {
if (S.top == 0) {
return true;
} else {
return false;
}
}
```
3. 判断栈是否已满:
判断栈是否已满,只需要判断栈顶指针是否等于栈的最大容量,如果等于,则表示栈已满,否则栈中还有空间可以添加元素。具体实现如下:
```
bool StackFull(SeqStack S) {
if (S.top == MAXSIZE) {
return true;
} else {
return false;
}
}
```
4. 入栈操作:
入栈操作就是向栈中添加一个元素,只需要将元素添加到栈顶指针所指向的位置,然后将栈顶指针加1即可。具体实现如下:
```
bool Push(SeqStack *S, int x) {
if (StackFull(*S)) {
return false; // 栈已满,无法入栈
} else {
S->data[S->top] = x; // 将元素添加到栈顶指针所指向的位置
S->top++; // 栈顶指针加1
return true;
}
}
```
5. 出栈操作:
出栈操作就是将栈顶元素弹出,只需要将栈顶指针减1,然后返回栈顶元素即可。具体实现如下:
```
bool Pop(SeqStack *S, int *x) {
if (StackEmpty(*S)) {
return false; // 栈为空,无法出栈
} else {
S->top--; // 栈顶指针减1
*x = S->data[S->top]; // 返回栈顶元素
return true;
}
}
```
阅读全文