`
hslx111
  • 浏览: 3983 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

C实现顺序栈

    博客分类:
  • C
阅读更多

昨天写个程序用到栈,奈何老师只让用C,现成的STL不能用,只好自己写一个了,发现顺序栈写起来比链栈要简单一些.

 

stack.h

/*
** Header file for stack
** Written by santos at 2013.3.24
*/
#ifndef STACK_H
#define STACK_H 

#define STACK_SIZE 100
typedef int ElementType;

typedef struct
{
	ElementType data[STACK_SIZE];
	int top;
}Stack;

void InitStack(Stack *s);

int IsEmpty(Stack *s);

int IsFull(Stack *s);

void Push(Stack *s, ElementType element);

ElementType Pop(Stack *s);

ElementType GetTop(Stack *s); 

#endif

 stack.c

/*
** Definition file for stack
** Written by santos at 2013.3.24
*/
#include "stack.h"
#include <stdio.h>

void InitStack(Stack *s)
{
	s->top = -1;
}

int IsEmpty(Stack *s)
{
	if (s->top == -1)
		return 1;
	else
		return 0;
}

int IsFull(Stack *s)
{
	if (s->top == STACK_SIZE - 1)
		return 1;
	else 
		return 0;
}

void Push(Stack *s, ElementType element)
{
	if (!IsFull(s))
	{
		s->top++;
		s->data[s->top] = element;
	}
	else
		printf("The stack is full!\n");
}

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

ElementType GetTop(Stack *s)
{
	if (!IsEmpty(s))
		return s->data[s->top];
	else
	{
		return -1;
	}
}

 

0
6
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics