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

来源:互联网 发布:程序员地中海 编辑:程序博客网 时间:2024/04/30 02:50

问题代码:

/*copyright (t) 2016,烟台大学计算机学院*All rights reserved.*文件名称:1.cpp*作者:李玲   *完成日期:2016年9月29日*版本号:v1.0*问题描述:定义顺序栈存储结构,实现其基本运算,并完成测试。 *输入描述:无*程序输出:顺序栈基本运算的实现结果*/sqstack.h:#define Maxsize 100typedef char Elemtype;typedef struct                            //定义顺序栈{    Elemtype data[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);               //输出栈sqstack.cpp:#include <stdio.h>#include <malloc.h>#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)           //栈是否为空{    return (s->top==-1);}int StackLength(SqStack *s)           //返回栈中元素个数——栈长度{    return (s->top+1);}bool Push(SqStack *&s,Elemtype e)     //入栈{    if(s->top==Maxsize)        return false;    s->top++;    s->data[s->top]=e;    return true;}bool Pop(SqStack *&s,Elemtype &e)     //出栈{    if(s->top==-1)        return false;    e=s->data[s->top];    s->top--;    printf("%c ",e);    return true;}bool GetTop(SqStack *s,Elemtype &e)   //取栈顶数据元素{    if(s->top==-1)        return false;    e=s->data[s->top];    return true;}void DispStack(SqStack *s)            //输出栈{    int i;    for(i=s->top;i>=0;i--)    {        printf("%c ",s->data[i]);    }    printf("\n");}main.cpp:#include <stdio.h>#include "sqstack.h"int main(){    SqStack *s;    Elemtype e;    InitStack(s);                         //初始化栈s    if(StackEmpty(s))                     //判断s栈是否为空        printf("该栈是空栈\n");    else        printf("该栈不是空栈\n");    Push(s,'a');                          //a元素进栈    Push(s,'b');                          //b元素进栈    Push(s,'c');                          //c元素进栈    Push(s,'d');                          //d元素进栈    Push(s,'e');                          //e元素进栈    if(StackEmpty(s))                     //判断s栈是否为空        printf("该栈是空栈\n");    else        printf("该栈不是空栈\n");    printf("栈长度为:%d\n",StackLength(s));        //输出栈长度    printf("从栈顶元素到栈底元素的输出序列为:\n");    DispStack(s);                                   //输出从栈顶到栈底元素    if(StackEmpty(s))                     //判断s栈是否为空        printf("该栈是空栈\n");    else        printf("该栈不是空栈\n");    printf("出栈序列为:\n");               //出栈,并输出出栈序列    while (!StackEmpty(s))                //栈不为空时输出出栈元素        Pop(s,e);    printf("\n");    DestroyStack(s);                      //销毁(释放)栈    printf("此栈已被销毁!\n");    return 0;}



运行结果:

知识点总结:

顺序栈的定义及基本运算,建立顺序栈的算法库方法。

学习心得:

了解了顺序栈的基本用法,运用了顺序栈的相关知识,巩固了栈的应用。

 

0 0
原创粉丝点击