第五周项目二

来源:互联网 发布:手机windows主题下载 编辑:程序博客网 时间:2024/05/17 05:10
/*  烟台大学计算机与控制工程学院    文件名称:ycddd.cpp    作者:李恩   完成日期:2017年10月15日    问题描述:定义链栈存储结构,实现其基本运算  输入描述:无  输出描述:链栈的操作以及栈的操作后的元素输出,以及出栈的元素输出   */         #include <stdio.h>  #include "ltsk.h"    int main()  {      ElemType e;      LinkStNode *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;  }                    #include <stdio.h>  #include <malloc.h>  #include "ltsk.h"    void InitStack(LinkStNode *&s)//初始化  {      s=(LinkStNode *)malloc(sizeof(LinkStNode));//动态分配空间        s->next=NULL;  }      void DestroyStack(LinkStNode *&s)  {      LinkStNode *pre=s,*p=s->next;        while(p!=NULL)//循环释放空间      {          free(pre);            pre=p;            p=pre->next;      }        free(pre);    }    int  StackLength(LinkStNode *s)  {        int i=0;      LinkStNode *p;      p=s;      while(p!=NULL)//计算链栈元素个数      {          i++;//用i计数            p=p->next;      }        return i;  }      bool StackEmpty(LinkStNode *s)  {        return(s->next==NULL);      }      void Push(LinkStNode *&s,ElemType e)//入栈  {        LinkStNode *p;        p=(LinkStNode *)malloc(sizeof(LinkStNode));        p->data=e;//存放e        p->next=s->next;//将p节点插入作为首节点        s->next=p;        }      bool Pop(LinkStNode *&s,ElemType &e)  {      LinkStNode *p;        if(s->next==NULL)//栈空的情况      {          return false;      }        p=s->next;//提取p节点给e        e=p->data;        s->next=p->next;        free(p);        return true;    }      bool GetTop(LinkStNode *s,ElemType &e)  {      if(s->next==NULL)//栈空的情况            return false;        e=s->next->data;//将栈顶元素取出给e        return true;    }    void DispStack(LinkStNode *s)  {     LinkStNode *p=s->next;      while (p!=NULL)//输出链栈元素      {          printf("%c ",p->data);          p=p->next;      }      printf("\n");  }                                                                                          #include <stdio.h>      typedef char ElemType;    typedef struct linknode  {      ElemType data;        struct linknode *next;  }LinkStNode;      void InitStack(LinkStNode *&s);//初始化链栈    void DestroyStack(LinkStNode *&s);//销毁链栈    int  StackLength(LinkStNode *s);//计算长度    bool StackEmpty(LinkStNode *s);//判断是否为空    void Push(LinkStNode *&s,ElemType e);  //入栈    bool Pop(LinkStNode *&s,ElemType &e);  //出栈    bool GetTop(LinkStNode *s,ElemType &e);  //取栈顶元素    void DispStack(LinkStNode *s);  //输出栈中元素

原创粉丝点击