这个栈是以数组形式实现。
先定义了一个结构体StructRecord,结构体里包括三部分,栈的容量,栈顶元素的位置,和存储栈元素的数组,执行测试文件TestStack.c时需要输入栈的容量,以此来确定一个栈。
实现栈的一些规范操作,创造栈,插入,删除等。包括两个头文件Stack.h,fatal.h,库函数Stack.c,测试函数TestStack.c。头文件放的都是函数声明,库函数Stack.c放的的函数的定义。
fatal.h
#include<stdio.h> #include<stdlib.h> #define Error(Str) FatalError(Str) #define FatalError(Str) fprintf(stderr, "%s\n", Str), exit(1);
Stack.h
typedef char ElementType; #ifndef _Stack_H #include<stdbool.h> struct Node; typedef struct Node *PtrToNode; typedef PtrToNode Stack; bool IsEmpty(Stack S);//判断栈是否为空 Stack CreatStack(void);//初始化一个栈 void Pop(Stack S);//对栈进行删除工作,只能弹出栈顶元素 void MakeEmpty(Stack S);//使得一个栈制空 void Push(ElementType X, Stack S); ElementType Top(Stack S); void DisposeStack(Stack S); void PrintStake(Stack S); void balance(char *ch, Stack S);//平衡符号,在字符数组查{},[],()是否匹配 #endif // !_Stack_H
Stack.c