您的位置:首页 > 编程语言 > C语言/C++

C语言 简单的栈

2016-02-29 15:53 393 查看
//简单的栈

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

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

//定义栈的结构

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

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
}




总结:数组栈容量有限制,不可以无限大
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: