/**************************************************************************************
* Function : 模拟栈
* Create Date : 2014/04/23
* Author : NTSK13
* Email : beijiwei@qq.com
* Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。
* 任何单位和个人不经本人允许不得用于商业用途
* Version : V0.1
***************************************************************************************
题目:简单数据结构之栈模拟
**************************************************************************************/
#include<stdio.h>
#define MY_FUNC 1
#if MY_FUNC
#define M 10 //栈最大高度
typedef struct stack
{
int data[M];
int high;//栈当前高度
}Stack;
int sample[M];
int result[M];
void init_stack(Stack *a);//栈初始化
int push_stack(Stack *a,int value);//进栈
int pop_stack(Stack *a);//出栈
int get_top_element(Stack *a);//获取栈顶的元素
// The first method:
int main()
{
int i=0;
Stack sq;
init_stack(&sq);
freopen("input.txt","r",stdin);
for(i=0;i<M;i++)
scanf("%d",&sample[i]); // get input data
pop_stack(&sq);
get_top_element(&sq);
for(i=0;i<M;i++)
push_stack(&sq,sample[i]);
push_stack(&sq,100);
for(i=0;i<M;i++)
result[i]=pop_stack(&sq);
for(i=0;i<M;i++)
{
printf("%d\t",result[i]);
fflush(stdout);//修复Eclipse printf()不能显示的小bug
}
printf("\n");
fflush(stdout);
return (0);
}
void init_stack(Stack *a)//栈初始化
{
(*a).high=0;
}
int push_stack(Stack *a,int value)//进栈
{
if((*a).high==M)
{
printf("Stack is full, can not push !!! \n");
fflush(stdout);
return (-1);
}
else
{
if( (*a).high==0 )
{
(*a).data[0]=value;
(*a).high++;
return (1);
}
else
{
(*a).data[ (*a).high ]=value;
(*a).high++;
return (1);
}
}
}
int pop_stack(Stack *a)//出栈
{
int tmp=0;
if((*a).high==0)
{
printf("Stack is empty, can not pop !!! \n");
fflush(stdout);
return (-1);
}
else
{
tmp=(*a).data[ (*a).high -1];
(*a).high--;
return (tmp);
}
}
int get_top_element(Stack *a)//获取栈顶的元素
{
int tmp=0;
if((*a).high==0)
{
printf("Stack is empty, can not get top element !!! \n");
fflush(stdout);
return (-1);
}
else
{
tmp=(*a).data[ (*a).high -1];
return (tmp);
}
}
/********************************************my function end**************************************************/
#else
#endif
简单数据结构之栈模拟
最新推荐文章于 2022-10-25 17:57:36 发布