顺序栈

作者: northw1nd | 来源:发表于2018-11-13 12:14 被阅读0次

参考书籍:《大话数据结构》
环境:VS2017

#include<stdio.h>
#include<stdlib.h>

#define OK 1
#define ERROR 0
#define TRUE 0
#define FALSE 0
#define MAXSIZE 20

typedef int Status;
typedef int SElemType;

Status visit(SElemType e)
{
    printf("%d ", e);
    return OK;
}

typedef struct
{
    SElemType data[MAXSIZE];
    int top;
}SqStack;

Status InitStack(SqStack *S)
{
    S->top = -1;
    return OK;
}

Status StackEmpty(SqStack S)
{
    if (S.top == -1)
        return TRUE;
    else
        return FALSE;
}

Status ClearStack(SqStack *S)
{
    S->top = -1;
    return OK;
}

int StackLength(SqStack S)
{
    return S.top + 1;
}
Status Push(SqStack *S, SElemType e)
{
    if (S->top == MAXSIZE - 1)
        return ERROR;
    S->top++;
    S->data[S->top] = e;
    return OK;
}

Status GetTop(SqStack S, SElemType *e)
{
    if (S.top == -1)
        return ERROR;
    else
        *e = S.data[S.top];
    return OK;
}

Status Pop(SqStack *S, SElemType *e)
{
    if (S->top == -1)
        return ERROR;
    *e = S->data[S->top];
    S->top--;
    return OK;
}

Status StackTraverse(SqStack S)
{
    int i = 0;
    while (i <= S.top)
    {
        visit(S.data[i++]);
    }
    printf("\n");
    return OK;
}

int main()
{
    int j;
    SqStack s;
    int e;
    if (InitStack(&s) == OK)
        for (j = 1; j <= 10; j++)
            Push(&s, j);
    printf("栈中元素依次为:");
    StackTraverse(s);
    Pop(&s, &e);
    printf("弹出的栈顶元素 e=%d\n", e);
    printf("栈空否:%d(1:空 0:否)\n", StackEmpty(s));
    GetTop(s, &e);
    printf("栈顶元素 e=%d 栈的长度为%d\n", e, StackLength(s));
    ClearStack(&s);
    printf("清空栈后,栈空否:%d(1:空 0:否)\n", StackEmpty(s));

    system("pause");
    return 0;
}

相关文章

  • 数据结构基础--顺序栈

    顺序栈的概念:顺序栈是栈的顺序实现。顺序栈是指利用顺序存储结构实现的栈。采用地址连续的存储空间(数组)依次存储栈中...

  • 作业帮做-栈结构验证

    顺序栈操作验证 实验目的 掌握栈的顺序存储结构; 验证栈的操作特性; 掌握顺序栈的基本操作实现方法。 实验内容 建...

  • C语言实现链栈以及基本操作

    链栈,即用链表实现栈存储结构。链栈的实现思路同顺序栈类似,顺序栈是将数顺序表(数组)的一端作为栈底,另一端为栈顶;...

  • 栈(顺序栈)

    栈:限定只能在表尾进行插入和删除的线性表。 顺序栈:使用数组实现的栈。 栈特性: 允许插入和删除的一端叫栈顶(to...

  • 0x06栈

    a、顺序栈 b、链式栈

  • 【数据结构】【C#】005-栈:💫顺序栈

    C#数据结构:顺序栈 1、自定义顺序栈结构: 顺序栈:测试用例 输出结果: img.jpg 注意: 1、栈也是表结...

  • 6.从尾到头打印链表

    思路:直接顺序打印链表,并入栈,出栈的顺序即为倒序

  • 顺序存储结构栈 共享栈 链式存储结构栈

  • 校验出栈顺序

    给定入栈顺序,给出一组出栈顺序,判断是否满足条件

  • js栈的操作

    js模拟栈操作,输入两个数组,一个数组作为元素入栈顺序,另一个数组为出栈顺序,若出栈顺序符合入栈规则返回true

网友评论

      本文标题:顺序栈

      本文链接:https://www.haomeiwen.com/subject/kvwkfqtx.html