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

来源:互联网 发布:简历系统源码 java 编辑:程序博客网 时间:2024/05/23 19:20

**

问题及代码:

**

    /*           Copyright (c)2015,烟台大学计算机与控制工程学院           All rights reserved.           文件名称:第6周项目1 - 建立顺序栈算法库.cpp           作    者:孙翰文          完成日期:2015年10月9日           版 本 号:v1.0           问题描述:定义顺序栈存储结构,实现其基本运算,并完成测试。      输入描述:若干数据。     程序输出:各个步骤的文字叙述及其数据的输出。     */  

(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;      }  

**

运行结果:

**
这里写图片描述


**

知识点总结:

**
1.栈的建立,释放;
2.进栈出栈及栈的输出。

0 0
原创粉丝点击