顺序栈的实现
采用顺序存储的栈称为顺序栈,它是利用一组 地址连续的存储单元存放自栈底到栈顶的数据元素,同时附上一个标志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;
return true;

本文介绍了如何用C语言实现顺序栈和堆栈的链式结构。顺序栈利用地址连续的存储单元存放数据,通过top指针指示栈顶位置。链式结构通常使用单链表实现,栈底元素由头结点的下一个结点存储。代码已给出,欢迎反馈问题。
最低0.47元/天 解锁文章
7642

被折叠的 条评论
为什么被折叠?



