数据结构——顺序栈(C语言实现)

/*
   顺序栈实现
 */

#include <stdio.h>

#define SIZE  50

static int data[SIZE];   //声明数组data,用于存储栈中数组
static int index;        //声明变量index,用于表示栈中元素个数

//初始化栈
void init(){
    index = 0;
}

//清理栈
void deinit(){
    index = 0;
}

//判栈满
int full(){
    return index == SIZE;
}

//判栈空
int empty(){
    return index == 0;
}

//入栈
void push(int num){
    data[index] = num;
    index++;
}

//出栈
int pop(){
    index--;
    return data[index];
}

//取栈顶数据
int top(){
    return data[index-1];
}

//获取栈中元素个数
int size(){
    return index;
}

int main(){
    init();    //初始化栈
    
    //入栈
    int num = 0, loop = 0;
    for(loop = 0; loop < 10; loop++){
        printf("请输入一个整数:");
        //差错处理
        while(!scanf("%d",&num)){
            scanf("%*[^\n]");   //清除缓冲区不合法的换行符
            scanf("%*c");       //清楚缓冲区不合法的字符
        }
        scanf("%*[^\n]");   //清除缓冲区不合法的换行符
        scanf("%*c");       //清楚缓冲区不合法的字符

        //判栈满
        if(full()){
            printf("栈满!\n");
            return -1;
        }
        
        push(num);
    }

    //出栈
    while(!empty()){
        printf("%d  ",pop());
    }
    printf("\n");

    deinit();  //清理栈
    return 0;

}


运行结果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值