【第五周项目1】建立顺序栈算法库

来源:互联网 发布:荣威 知乎 编辑:程序博客网 时间:2024/06/18 18:31
/*Copyright (c)2017,烟台大学计算机与控制工程学院        All rights reserved.        文件名称:14.cpp        作    者:尚文哲完成日期:2017年10月11日                    问题描述:定义顺序栈存储结构,实现其基本运算,并完成测试。   输入描述:若干数据。  程序输出:各个步骤的文字叙述及其数据的输出。  */  //(1)头文件:  #include<stdio.h>    #include<malloc.h>    #define maxsize 100    typedef char ElemType ;    typedef struct    {     char date[maxsize];        int top;       }SqStack;        void InitStack(SqStack *&s);    //初始化栈    void DestroyStack(SqStack *&s);  //销毁栈    bool StackEmpty(SqStack *s);     //栈是否为空    int StackLength(SqStack *s);  //返回栈中元素个数——栈长度    bool Push(SqStack *&s,ElemType e); //入栈    bool Pop(SqStack *&s,ElemType &e); //出栈    bool GetTop(SqStack *s,ElemType &e); //取栈顶数据元素    void DispStack(SqStack *s);  //输出栈      //(2)源文件:        #include"sqstack.h"    void InitStack(SqStack *&s)    {        s=(SqStack *)malloc(sizeof(SqStack));        s->top=-1;    }    void DestroyStack(SqStack *&s)    {        free(s);    }    bool StackEmpty(SqStack *s)    {        if(s->top==-1)        {            return true;        }        else return false;    }    int StackLength(SqStack *s)    {        return s->top+1;    }    bool Push(SqStack *&s,ElemType e)    {        if(s->top==maxsize-1)        {            return false;        }        s->top++;        s->date[s->top]=e;        return true;        }    bool Pop(SqStack *&s,ElemType &e)    {        if(s->top==-1)        {            return false;        }        e=s->date[s->top];        s->top--;        return true;    }        bool GetTop(SqStack *s,ElemType &e)    {        if(s->top==-1)        {            return false;        }        e=s->date[s->top];        s->top--;        return true;    }    void DispStack(SqStack *l)    {        int i=0;        while(i<=l->top)        {            printf("%c ",l->date[i]);            i++;        }        printf("\n");    }          //(3)main函数:    #include"sqstack.h"    int main()    {        ElemType e;        SqStack *s;        printf("(1)初始化栈s\n");        InitStack(s);        printf("(2)栈为%s\n",(StackEmpty(s)?"空":"非空"));        printf("(3)依次进栈元素a,b,c,d,e\n");        Push(s,'a');        Push(s,'b');        Push(s,'c');        Push(s,'d');        Push(s,'e');        printf("(4)栈为%s\n",(StackEmpty(s)?"空":"非空"));        printf("(5)栈长度:%d\n",StackLength(s));        printf("(6)从栈顶到栈底元素:");        DispStack(s);        printf("(7)出栈序列:");        while (!StackEmpty(s))        {            Pop(s,e);            printf("%c ",e);        }        printf("\n");        printf("(8)栈为%s\n",(StackEmpty(s)?"空":"非空"));        printf("(9)释放栈\n");        DestroyStack(s);        return 0;    }   


运行结果

原创粉丝点击