C语言 简单的栈

//简单的栈

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

//栈的介绍:栈先进后出,一般用于将数据逆序输出
//栈一般只有四种方法--进栈,出栈,清空,判断栈是否为空

//定义栈的结构

#define datatype int//定义栈内数据类型
#define N 10//定义数组的大小
struct easystacknode{
    int top;//栈顶位置
    datatype data[N];
};

typedef struct easystacknode EStack;

//初始化栈
EStack selfstack = { -1, { 0 } };

//判断栈是否为空
int isempty();
//进栈
int push(datatype num);
//出栈
int pop();
//清空
void setempty();

void main(){
    //练习:十进制转换成二进制
    int m = 100;
    while (m!=0){
        //进栈
        push(m % 2);
        m = m / 2;
    }
    //打印出对应的二进制数据
    while (!isempty()){//直到栈为空时跳出循环
        printf("%d", pop());
    }
    printf("\n");
    system("pause");
}

//判断栈是否为空1,1为空,0为非空
int isempty(){
    if (selfstack.top==-1)//表示栈里一个元素也没有
    {
        return 1;
    }
    else{
        return 0;
    }
}

//进栈
int push(datatype num){
    //先判断栈是否溢出
    if (selfstack.top==N-1)
    {
        //栈已满
        return 1;
    }
    else{
        selfstack.top += 1;//栈顶坐标+1
        selfstack.data[selfstack.top] = num;
        return 0;
    }
}

//出栈
int pop(){
    //判断栈是否为空
    if (isempty())
    {
        return -1;
    }
    else{
        selfstack.top -= 1;//栈顶坐标-1
        return selfstack.data[selfstack.top + 1];
    }
}

//清空
void setempty(){
    selfstack.top=-1;//栈顶坐标置为-1
}

 

 

总结:数组栈容量有限制,不可以无限大

 

posted on 2016-02-29 15:53  寒魔影  阅读(382)  评论(0编辑  收藏  举报

导航