顺序栈的实现
采用顺序存储的栈称为顺序栈,它是利用一组 地址连续的存储单元存放自栈底到栈顶的数据元素,同时附上一个标志top指示栈顶的位置。
这里使用结构体来表示栈。
#define maxsize 100
typedef struct stack{
int data[maxsize];
int top;
}stack
编码前,我们需要明白几个操作状态。
- 栈空:top = -1,-1 同时也是初始值;
- 栈满:top=maxsize-1;
- 入栈:栈不满,则top+1,然后data[top]=数值;栈满则入栈失败;
- 出栈:栈非空,则先取data[top],然后top-1;
实现的代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAXSIZE 200
typedef struct SNode* Stack;
typedef struct SNode SNode;
struct SNode{
int data[MAXSIZE];
int top;
};
Stack initial_stack(){
Stack s = (Stack)malloc(sizeof(SNode));
s->top = -1;
}
bool push(Stack S, int item){
if(S->top == MAXSIZE - 1){
printf("ERROR: The stack is full!\n");
return false;
}
else{
S->top++;
S->data[S->top] = item;