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

来源:互联网 发布:怎么提高手机网络速度 编辑:程序博客网 时间:2024/06/11 10:22
01./*       02.Copyright (c)2015,烟台大学计算机与控制工程学院       03.All rights reserved.       04.文件名称:第6周项目1 - 建立顺序栈算法库.cpp       05.作    者:高露       06.完成日期:2015年10月12日       07.版 本 号:v1.0       08.       09.问题描述:定义顺序栈存储结构,实现其基本运算,并完成测试。  10.输入描述:若干数据。 11.程序输出:各个步骤的文字叙述及其数据的输出。 12.*/  /*      Copyright (c)2015,烟台大学计算机与控制工程学院      All rights reserved.      文件名称:第6周项目1 - 建立顺序栈算法库.cpp      作    者:刘强      完成日期:2015年10月5日      版 本 号:v1.0            问题描述:定义顺序栈存储结构,实现其基本运算,并完成测试。 输入描述:若干数据。程序输出:各个步骤的文字叙述及其数据的输出。*/(1)头文件:[cpp] view plaincopyprint?01.#include<stdio.h>   02.#include<malloc.h>   03.#define maxsize 100   04.typedef char ElemType ;  05.typedef struct  06.{  07. char date[maxsize];  08.    int top;     09.}SqStack;  10.  11.void InitStack(SqStack *&s);    //初始化栈   12.void DestroyStack(SqStack *&s);  //销毁栈   13.bool StackEmpty(SqStack *s);     //栈是否为空   14.int StackLength(SqStack *s);  //返回栈中元素个数——栈长度   15.bool Push(SqStack *&s,ElemType e); //入栈   16.bool Pop(SqStack *&s,ElemType &e); //出栈   17.bool GetTop(SqStack *s,ElemType &e); //取栈顶数据元素   18.void DispStack(SqStack *s);  //输出栈  #include<stdio.h>#include<malloc.h>#define maxsize 100typedef 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)源文件:[cpp] view plaincopyprint?01.#include"sqstack.h"   02.void InitStack(SqStack *&s)  03.{  04.    s=(SqStack *)malloc(sizeof(SqStack));  05.    s->top=-1;  06.}  07.void DestroyStack(SqStack *&s)  08.{  09.    free(s);  10.}  11.bool StackEmpty(SqStack *s)  12.{  13.    if(s->top==-1)  14.    {  15.        return true;  16.    }  17.    else return false;  18.}  19.int StackLength(SqStack *s)  20.{  21.    return s->top+1;  22.}  23.bool Push(SqStack *&s,ElemType e)  24.{  25.    if(s->top==maxsize-1)  26.    {  27.        return false;  28.    }  29.    s->top++;  30.    s->date[s->top]=e;  31.    return true;  32.  33.}  34.bool Pop(SqStack *&s,ElemType &e)  35.{  36.    if(s->top==-1)  37.    {  38.        return false;  39.    }  40.    e=s->date[s->top];  41.    s->top--;  42.    return true;  43.}  44.  45.bool GetTop(SqStack *s,ElemType &e)  46.{  47.    if(s->top==-1)  48.    {  49.        return false;  50.    }  51.    e=s->date[s->top];  52.    s->top--;  53.    return true;  54.}  55.void DispStack(SqStack *l)  56.{  57.    int i=0;  58.    while(i<=l->top)  59.    {  60.        printf("%c ",l->date[i]);  61.        i++;  62.    }  63.    printf("\n");  64.}  #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函数:[cpp] view plaincopyprint?01.#include"sqstack.h"   02.int main()  03.{  04.    ElemType e;  05.    SqStack *s;  06.    printf("(1)初始化栈s\n");  07.    InitStack(s);  08.    printf("(2)栈为%s\n",(StackEmpty(s)?"空":"非空"));  09.    printf("(3)依次进栈元素a,b,c,d,e\n");  10.    Push(s,'a');  11.    Push(s,'b');  12.    Push(s,'c');  13.    Push(s,'d');  14.    Push(s,'e');  15.    printf("(4)栈为%s\n",(StackEmpty(s)?"空":"非空"));  16.    printf("(5)栈长度:%d\n",StackLength(s));  17.    printf("(6)从栈顶到栈底元素:");  18.    DispStack(s);  19.    printf("(7)出栈序列:");  20.    while (!StackEmpty(s))  21.    {  22.        Pop(s,e);  23.        printf("%c ",e);  24.    }  25.    printf("\n");  26.    printf("(8)栈为%s\n",(StackEmpty(s)?"空":"非空"));  27.    printf("(9)释放栈\n");  28.    DestroyStack(s);  29.    return 0;  30.}  #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;}运行结果:

知识点总结:

主要是栈的建立,释放,进栈出栈及栈的输出。

学习心得:

栈与线性表有着密切联系,一定要打好基础

0 0