栈的顺序存储结构

栈的结构定义如下

typedef struct
{
    int data[MAXSIZE];
    int top;
} Stack;

它是一种先进后出(FILO)的数据结构,所有的操作如下

// 操作结果:初始化一个栈
void Init(Stack *s)
{
    s->top = -1;
}

// 操作结果:向栈s放入一个元素e
int Push(Stack *s, int e)
{
    // 栈满
    if (s->top == MAXSIZE - 1)
    {
        return ERROR;
    }
    s->data[++(s->top)] = e;
    return OK;
}

// 操作结果:从栈s弹出一个元素并放入e指向的内存
int Pop(Stack *s, int *e)
{
    // 栈为空
    if (s->top == -1)
    {
        return ERROR;
    }
    *e = s->data[(s->top)--];
    return OK;
}

测试结果说明

int main()
{
    Stack *s = (Stack*)malloc(sizeof(Stack));
    Init(s);
    Push(s, 1);
    Push(s, 2);
    Push(s, 3);
    Push(s, 4);
    Push(s, 5);
    Push(s, 6);
    int *p = (int*)malloc(sizeof(int));
    while (Pop(s, p))
    {
        printf("%d\n", *p);
    }
}
$ gcc stack.c
$ ./a.out
6
5
4
3
2
1

入栈顺序为1,2,3,4,5,6
出栈顺序为6,5,4,3,2,1

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 栈的定义: 栈是一个后进先出的线性表,它要求只在表尾进行删除和插入操作。 所谓栈是一种特殊的线性表(顺序表和链表)...
    frankisbaby阅读 3,923评论 0 0
  • 1、算法的概念 (1)概念:是指解题方案的准确而完整的描述。 【考题1】在计算机中,算法是指() A查询方法B加工...
    成都小菜阅读 5,694评论 0 15
  • 其实我只是想要试试简书怎么玩
    喜立儿阅读 936评论 2 2
  • 过分的话发的发割发代首个电风扇个法棍个电风扇个电风扇个电风扇第三方的萨芬大赛的范德萨范德萨发
    thron阅读 916评论 0 0
  • W:完成一套四级卷子 O:可以顺利完成四级考试,会很开心 O:今天上午满课,下午要去师兄家时间协调不过来 P:如果...
    高N少女阅读 663评论 0 0