堆栈实现

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include "stack.h"
#ifdef __cplusplus 
extern "C" { 
#endif 
#ifdef STACK_LINK
typedef struct stack{
	int num;
	struct stack *next;
}STACK;

STACK *g_pStack = NULL;

void push(int i)
{
	STACK *pEle = (STACK*)malloc(sizeof(STACK));
	if(pEle == NULL)
	{
		return;
	}
	memset(pEle,0,sizeof(STACK));
	pEle->num = i;
	if(g_pStack == NULL)
	{
		g_pStack = pEle;
	}
	else
	{
		pEle->next = g_pStack;
		g_pStack = pEle;
	}
	return;
}

int pop()
{
	int tempRe = 0;
	STACK *tempFree = 0;
	if(g_pStack == NULL)
	{
		return 0;
	}
	tempRe = g_pStack->num;
	tempFree = g_pStack;
	g_pStack = g_pStack->next;
	free(tempFree);
	return tempRe;
}

int empty()
{
	return (g_pStack)?0:1;
}

#endif

#ifdef STACK_ARRAY
int g_stack[MAX_STACK] = {0};
unsigned int g_pos = 0;
void push(int i)
{
	if(g_pos == MAX_STACK)
	{
		return;
	}
	g_stack[g_pos++] = i;
	return;
}

int pop()
{
	if(g_pos == 0)
	{
		return 0;
	}
	return g_stack[--g_pos];
}

int empty()
{
	return (g_pos == 0)?1:0;
}
#endif



#ifdef __cplusplus
}
#endif
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值