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

来源:互联网 发布:windows启用网络发现 编辑:程序博客网 时间:2024/05/17 01:18
<span style="font-family:Arial;BACKGROUND-COLOR: #ffffff">问题及代码:</span>
/*copyright (t) 2016,烟台大学计算机学院*All rights reserved.*文件名称:cc.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
原创粉丝点击