//简单的栈 #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(" "); 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 }
总结:数组栈容量有限制,不可以无限大