数列栈

#ifndef _STACK_H_
#define _STACK_H_


#include<malloc.h>


#define TRUE 1
#define FALSE 0


typedef unsigned int boolean;
typedef struct STACK
{
USER_TYPE *data; // 指向堆栈空间的指针,以后将其看做数组
int stackMaxRoom; // 堆栈最大空间
int top; // 栈顶指针
}STACK;


boolean initStack(STACK **head, int maxRoom);
void destoryStack(STACK **head);
boolean isStackEmpty(STACK head);
boolean isStackFull(STACK head);
boolean push(STACK *head, USER_TYPE v);
boolean pop(STACK *head, USER_TYPE *v);
boolean readTop(STACK head, USER_TYPE *v);


boolean readTop(STACK head, USER_TYPE *v)
{
boolean Ok = TRUE;


if(isStackEmpty(head) == TRUE)
Ok = FALSE;
else
*v = head.data[head.top-1];


return Ok;
}


boolean pop(STACK *head, USER_TYPE *v)
{
boolean Ok = TRUE;


if(isStackEmpty(*head) == TRUE)
Ok = FALSE;
else
*v = head->data[--head->top];


return Ok;
}


boolean push(STACK *head, USER_TYPE v)
{
boolean Ok = TRUE;


if(isStackFull(*head) == TRUE)
Ok = FALSE;
else
head->data[head->top++] = v;


return Ok;
}


boolean isStackFull(STACK head)
{
return head.stackMaxRoom <= head.top;
}


boolean isStackEmpty(STACK head)
{
return 0 == head.top;
}


void destoryStack(STACK **head)
{
if(*head != NULL)
{
if((*head)->data != NULL)
free((*head)->data);
free(*head);
*head = NULL;
}
}


boolean initStack(STACK **head, int maxRoom)
{
boolean Ok = TRUE;


if(maxRoom <= 0)
Ok = FALSE;
else
{
if(*head == NULL)
{
*head = (STACK *)malloc(sizeof(STACK));
if(*head == NULL)
Ok = FALSE;
else
{
(*head)->data = (USER_TYPE *)malloc(sizeof(USER_TYPE) * maxRoom);
if((*head)->data != NULL)
{
(*head)->stackMaxRoom = maxRoom;
(*head)->top = 0;
}
else
{
free(*head);
*head = NULL;
Ok = FALSE;
}
}
}
else
Ok = FALSE;
}


return Ok;
}


#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值