数据结构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;}

原创粉丝点击