昨天写个程序用到栈,奈何老师只让用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; } }