简单数据结构之栈模拟

/************************************************************************************** 
* 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  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值