数据结构C语言实现之顺序栈
来源:互联网 发布:js方法参数注释规范 编辑:程序博客网 时间:2024/04/25 06:27
#include <stdio.h>#include <stdlib.h>//定义函数结果状态码#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0//宏定义栈的空间大小#define STACKSIZE 20//定义数据类型typedef int ElemType ;//定义程序返回状态类型typedef int State;//顺序栈存储结构struct _SqStack{ ElemType data[STACKSIZE];//存放数据元素的数组 int top;//指向栈顶位置};typedef struct _SqStack *SqStack;/*************************************************Function: InitStackDescription: 初始化,构造空栈Input: 顺序栈指针 SqStack stackOutput:Return: 成功返回OKOthers: 空栈top为-1*************************************************/State InitStack(SqStack stack){ stack->top = -1; return OK;}/*************************************************Function: IsStackEmptyDescription: 判断栈是否为空Input: 顺序栈指针 SqStack stackOutput:Return: 为空返回TRUE,否则返回FALSEOthers:*************************************************/State IsStackEmpty(SqStack stack){ if(stack->top == -1) return TRUE; else return FALSE;}/*************************************************Function: IsStackFullDescription: 判断栈是否满Input: 顺序栈指针 SqStack stackOutput:Return: 为满返回TRUE,否则返回FALSEOthers:*************************************************/State IsStackFull(SqStack stack){ if(stack->top == STACKSIZE-1) return TRUE; else return FALSE;}/*************************************************Function: PushDescription: 入栈Input: 顺序栈指针 SqStack stack 数据元素 ElemType eOutput:Return: 成功返回OK,失败返回ERROROthers:*************************************************/State Push(SqStack stack, ElemType e){ //判断栈是否满 if(stack->top == STACKSIZE-1) { printf("The stack is full!"); return ERROR; } //栈顶指针加1 stack->top++; stack->data[stack->top] = e; return OK;}/*************************************************Function: PopDescription: 出栈Input: 顺序栈指针 SqStack stackOutput:Return: 成功返回数据元素,程序退出Others:*************************************************/ElemType Pop(SqStack stack){ //判断是否为空栈 if(stack->top == -1) { printf("The stack is empty!"); exit(EXIT_FAILURE); } //保存当前栈顶元素 ElemType e = stack->data[stack->top]; //栈顶指针减1 stack->top--; return e;}/*************************************************Function: GetTopDescription: 取栈顶元素Input: 顺序栈指针 SqStack stackOutput:Return: 成功返回数据元素,程序退出Others:*************************************************/ElemType GetTop(SqStack stack){ //判断是否为空栈 if(stack->top == -1) { printf("The stack is empty!"); exit(EXIT_FAILURE); } return stack->data[stack->top];}/*************************************************Function: ClearStackDescription: 把栈置空Input: 顺序栈指针 SqStack stackOutput:Return: 成功返回OKOthers:*************************************************/State ClearStack(SqStack stack){ stack->top = -1; return OK;}/*************************************************Function: GetLengthDescription: 取得栈的长度Input: 顺序栈指针 SqStack *stackOutput:Return: 返回栈的长度Others:*************************************************/int GetLength(SqStack stack){ return stack->top+1;}