栈简单运用

读入n个整数

定义栈数据类型

定义栈的初始化、判空、判满、入栈、出栈函数

写一主函数,完成n个数的读入和逆序输出

#include<stdio.h>
#define stacksize 100
#define OK 1
#define ERROR 0
#define Overflow -1
typedef int Status;
typedef int ElemType;
typedef struct
{
    ElemType data[stacksize];
    int top;
}SeqStack;
//定义栈数据类型

void InitStack(SeqStack &s)
{
    s.top = 0;
}
//栈的初始化

int StackEmpty(SeqStack s)
{
    return (s.top == 0);
}
//判断栈空

int StackFull(SeqStack s)
{
    return (s.top == stacksize);
}
//判断栈满

Status Push(SeqStack &s, ElemType x)
{
    if(StackFull(s))
        return Overflow;
    s.data[s.top++] = x;
    return OK;
}
//入栈

Status Pop(SeqStack &s, ElemType &e)
{
    if(StackEmpty(s))
        return Overflow;
    e = s.data[--s.top];
    return OK;
}
//出栈

Status GetTop(SeqStack s, ElemType &e)
{
    if(StackEmpty(s))
        return Overflow;
    e = s.data[s.top - 1];
    return OK;
}
//取栈顶元素

void StackTravel(SeqStack s)
{
    int i;
    for(i = 0 ; i < s.top ; i++)
        printf("%d ", s.data[i]);
}
//遍历,显示栈中元素

int main()
{
    int i, n, d;
    SeqStack s1;
    InitStack(s1);
    scanf("%d", &n);
    for(i = 0 ; i < n ; i++)
    {
        scanf("%d", &d);
        Push(s1, d);
    }
    StackTravel(s1);
    printf("\n");
    GetTop(s1, d);
    printf("栈顶元素是%d\n", d);
    Pop(s1, d);
    printf("出栈元素是%d\n", d);
    StackTravel(s1);
    printf("\n");
    return 0;
}

 

posted @ 2015-10-16 15:43  午夜阳光~  阅读(135)  评论(0编辑  收藏  举报