数据结构与算法---栈

#include<stdio.h>
#include<stdlib.h>

enum boolean {FALSE,TRUE};
typedef enum boolean Bool;
typedef int ElementsType;

struct stack
{
 int top;
 ElementType *elements;
 int MaxSize;
};

typedef struct stack Stack;

void InitStack(Stack *,int sz);
void FreeStack(Stack *);
int Push(Stack *,ElementType);
ElementType Pop(Stack *);
ElementType GetTop(Stack*);
void MakeEmpty(Stack *);
Bool IsEmpty(Stack *S);
Bool IsFull(Stack *S);

#include"stack.h"

void FreeStack(Stack *S)
{
 free(S->elements);
}

void MakeEmpty(Stack *S)
{
 S->top = -1;
}

Bool IsEmpty(Stack *S)
{
 return (Bool)(S->top == -1);
}

Bool IsFull(Stack *S)
{
 return (Bool)(S->top == S->MaxSize-1);
}

void InitStack(Stack *S,int sz)
{
 S->MaxSize = sz;
 S->elements = (ElementType *)malloc(sizeof(ElementType ) * S->MaxSize);
 S->top = -1;
}

int Push(Stack *S,ElementType item)
{
 if(!IsFull(S))
 {
  S->elements[++(S->top)] = item;
  return 0;
 }
 else
 return -1;
}

ElementType Pop(Stack *S)
{
 if(!IsEmpty(S))
  return S->elments[(S->top)--];
 else
 {
  printf("stack is empty\n");
  exit(1);
 }
}

ElementType GetTop(Stack *S)
{
 if(!IsEmpty(S))
  return S->elements[S->top];
 else
 {
  printf("stack is empty\n");
  exit(1);
 }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值