美文网首页
23.数据结构-线性表-4.顺序栈

23.数据结构-线性表-4.顺序栈

作者: aofeilin | 来源:发表于2018-09-11 14:25 被阅读7次
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "time.h"

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20 /* 存储空间初始分配量 */

typedef int Status;
typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为int */

/* 顺序栈结构 */
typedef struct {
    SElemType data[MAXSIZE];
    int top;
}SqStack;

Status visit(SElemType c)
{
    printf("%d ",c);
    return OK;
}
/*  构造一个空栈S */
Status initStack(SqStack *S){
    S->top=-1;
    return OK;
}

/* 把S置为空栈 */
Status ClearStack(SqStack *S)
{
    S->top=-1;
    return OK;
}

/* 若栈S为空栈,则返回TRUE,否则返回FALSE */
Status StackEmpty(SqStack S)
{
    if (S.top==-1)
        return TRUE;
    else
        return FALSE;
}

/* 返回S的元素个数,即栈的长度 */
int StackLength(SqStack S)
{
    return S.top+1;
}

/* 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR */
Status GetTop(SqStack S,SElemType *e)
{
    if (S.top==-1)
        return ERROR;
    else
        *e=S.data[S.top];
    return OK;
}

/* 插入元素e为新的栈顶元素 */
Status Push(SqStack *S,SElemType e){
    if (S->top == MAXSIZE -1) {
        return ERROR;
    }
    S->top++;
    printf("%d",S->top);
    S->data[S->top] = e;
    return OK;
}

/* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */
//删除
Status Pop(SqStack *S,SElemType *e){
    if (S->top == -1) {
        return ERROR;
    }
    *e=S->data[S->top];
    S->top--;
    return OK;
}
/* 从栈底到栈顶依次对栈中每个元素显示 */
Status printStack(SqStack S){
    int i =0;
    while (i <= S.top) {
        printf("%d", S.data[i++]);
    }
    printf("\n");
    return OK;
}
int main()
{
    SqStack stack;
    if (initStack(&stack) == OK) {
        for (int i= 0; i<=10; i++) {
            Push(&stack, i);
        }
    }
    printStack(stack);
    return 0;
}

相关文章

  • 23.数据结构-线性表-4.顺序栈

  • java集合-stack

    转载 栈的抽象数据类型 栈是一种用于存储数据的简单数据结构,有点类似链表或者顺序表(统称线性表),栈与线性表的最大...

  • java数据结构与算法之栈(Stack)设计与实现

    一、栈的抽象数据类型  栈是一种用于存储数据的简单数据结构,有点类似链表或者顺序表(统称线性表),栈与线性表的最大...

  • 栈和队列

    栈和队列是两种应用非常广泛的数据结构,它们都来自线性表数据结构,都是“操作受限”的线性表。 栈 栈(Stack):...

  • 栈和队列

    栈和队列也是一种线性表,只不过它们是一种操作受限的线性表。其存储形式还是可以按照线性表的数据结构来表示(顺序表示:...

  • 栈的顺序存储结构

    栈的顺序存储结构 栈是一种重要的线性结构,可以这样讲,栈是线性表的一种具体形式。 栈这种后进先出的数据结构应用是非...

  • 04栈和队列(特殊的线性表)

    1.栈 1.栈 栈:栈是限定仅在表尾进行插入和删除操作的特殊的线性表。线性表按照存储结构分有顺序存储结构实现的顺序...

  • 冷月手撕408之数据结构(5)-栈

    数据结构中栈是一种受限的线性表,是一种先入后出的数据结构,大家重点掌握顺序栈的特点。 主要的重点冷月做出了标识,知...

  • 数据结构之线性表的链式存储结构

    之前写了线性表的顺序存储结构和有序线性表的顺序存储结构,今天接着写线性表的链式存储结构 数据结构之线性表的顺序存储...

  • 用线性表表示的顺序栈

    LinearListStack(线性表栈) github源码特点:1.从数据结构角度看,栈也是线性表,其特殊性在于...

网友评论

      本文标题:23.数据结构-线性表-4.顺序栈

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