今天闲着没事写个简单的数组栈,突然感觉纯文字显示不是特别直观,就稍作修改弄了个控制台下的字符图形界面。
感觉用这个去教学生,学生应该能学会。
代码特别简单,就一个push函数,一个pop函数,数组和栈顶是全局的,这样就不用传递参数了。
代码如下:
/**************************************************
* 日期 2015年12月3日
* 作者 李欣
* 目的 用数组实现栈
***************************************************/
#include <stdio.h>
//定义全局数组的意义在于可以不用传入参数
#define MAXSIZE 10
int stack[MAXSIZE];
int top = -1;
//压栈
void push(int value)
{
if(top >= MAXSIZE)
{
printf("栈满\n");
}
else
{
top++;
stack[top] = value;
}
}
//出栈
void pop()
{
int tmp;
if(top == -1)
{
printf("栈空\n");
}
else
{
tmp = stack[top];
top--;
}
}
//文字打印
void print_stack()
{
int i = 0;
if(-1 == top)
{
printf("栈中没有任何元素");
}
else
{
for(i=0;i<=top;i++)
{
printf("%-5d",stack[i]);
}
}
printf("\n");
}
//图形打印
void show_stack()
{
int i;
for(i=10;i>=0;i--)
{
printf(" +----------------------+\n");
if(top>=i)
{
if(top == i)
{
printf(" top----->| %d |\n",stack[i]);
}
else
{
printf(" | %d |\n",stack[i]);
}
}
else
{
printf(" | |\n");
}
}
printf(" +======================+\n");
if(-1 == top)
{
printf(" top-----> \n\n\n");
}
}
int main()
{
push(3);
push(4);
push(5);
show_stack();
//print_stack();
pop();
pop();
show_stack();
//show_stack();
pop();
push(5);
//show_stack();
return 0;
}