listack.h#ifndef LISTACK_H_INCLUDED
#define LISTACK_H_INCLUDEDtypedef char ElemType;
typedef struct linknode
{ElemType data;              //数据域struct linknode *next;      //指针域
} LiStack;                      //链栈类型定义void InitStack(LiStack *&s);  //初始化栈
void DestroyStack(LiStack *&s);  //销毁栈
int StackLength(LiStack *s);  //返回栈长度
bool StackEmpty(LiStack *s);  //判断栈是否为空
void Push(LiStack *&s,ElemType e);  //入栈
bool Pop(LiStack *&s,ElemType &e);  //出栈
bool GetTop(LiStack *s,ElemType &e);  //取栈顶元素
void DispStack(LiStack *s);  //输出栈中元素#endif // LISTACK_H_INCLUDED
listack.cpp

#include <stdio.h>
#include <malloc.h>
#include "listack.h"void InitStack(LiStack *&s)  //初始化栈
{s=(LiStack *)malloc(sizeof(LiStack));s->next=NULL;
}void DestroyStack(LiStack *&s)  //销毁栈
{LiStack *p=s->next;while (p!=NULL){free(s);s=p;p=p->next;}free(s);    //s指向尾结点,释放其空间
}int StackLength(LiStack *s)  //返回栈长度
{int i=0;LiStack *p;p=s->next;while (p!=NULL){i++;p=p->next;}return(i);
}bool StackEmpty(LiStack *s)  //判断栈是否为空
{return(s->next==NULL);
}void Push(LiStack *&s,ElemType e)  //入栈
{LiStack *p;p=(LiStack *)malloc(sizeof(LiStack));p->data=e;              //新建元素e对应的节点*pp->next=s->next;        //插入*p节点作为开始节点s->next=p;
}bool Pop(LiStack *&s,ElemType &e)  //出栈
{LiStack *p;if (s->next==NULL)      //栈空的情况return false;p=s->next;              //p指向开始节点e=p->data;s->next=p->next;        //删除*p节点free(p);                //释放*p节点return true;
}bool GetTop(LiStack *s,ElemType &e)  //取栈顶元素
{if (s->next==NULL)      //栈空的情况return false;e=s->next->data;return true;
}void DispStack(LiStack *s)  //输出栈中元素
{LiStack *p=s->next;while (p!=NULL){printf("%c ",p->data);p=p->next;}printf("\n");
}
main.cpp#include <stdio.h>
#include "listack.h"int main()
{ElemType e;LiStack *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;
}

												

第5周实践项目2 链栈的算法库建立相关推荐

  1. 第3周 实践项目2 建设”顺序表“算法库(可参考为模板)

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目2 -建设"顺序表算法库" *作 者:邵雪源 ...

  2. 数据结构上机实践第八周项目2- 建立链串的算法库

    建立链串的算法库 一般每一种数据结构都不会局限于在连续空间内的存取,那我们的串自然也不反常,本次实践将建立链串的算法库,应用于有需求的工程当中,提高程序的容错性. 本次实践依然会用到多文件组织工程的建 ...

  3. 第5周实践项目1 顺序栈建立的算法库

    main.cpp #include <stdio.h> #include "Sqstack.h" int main() {Elemtype e;SqStack *s;p ...

  4. 第八周实践项目3 顺序串一些算法操作

    sqString.h #define MaxSize 100 //最多的字符个数 typedef struct { char data[MaxSize]; //定义可容纳MaxSize个字符的空间in ...

  5. 第七周实践项目4 队列数组

    创建10个队列,分别编号为0-9(处理为队列数组,编号即下标).输入若干个正整数,以数字0作为结束.设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中.最后输出所有的非空队列. 要求将 ...

  6. 数据结构上机实践第三周项目2 - 建设“顺序表”算法库

    [项目2 - 建设"顺序表"算法库]  领会"0207将算法变程序"部分建议的方法,建设自己的专业基础设施算法库.这一周,建的是顺序表的算法库.  算法库包括两 ...

  7. 数据结构上机实践第四周项目2 - 建设“单链表”算法库

    项目2 - 建设"单链表"算法库 本次实践的目的以多文件组织的形式建设"单链表算法库",以便在后续的工程中使用. 文中的多文件组织方式不再细说,可以点击此处参照 ...

  8. 第五周实践项目6 数制转换(栈)

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目6-把十进制的整数转换为任一进制数输出.提示:要转换为r进制,则 ...

  9. 数据结构上机实践第八周项目1- 建立顺序串的算法库

    建立顺序串的算法库 本次实践将建立顺序串的算法库,这样可以方便的将此算法运用于我们的所需的工程中,简化操作. 本次实践将用到多文件组织工程的建立,建立方法可以点击此处参照.(工程环境:Visual C ...

最新文章

  1. MemCached缓存知识知多少?
  2. Spring Boot 配置文件密码加密方法
  3. JQuery的插入操作滚动条显示返回顶部
  4. dbc连接mysql_Spring WebFlux 使用 R2DBC 访问 MySQL
  5. 我会回来的!我很想念大家!
  6. MySQL优化十大技巧
  7. win7计算机搜索记录怎么删除文件,win7删除文件浏览记录,windows搜索记录删除
  8. Web初学者-作业-[学子商城-收藏页]
  9. Dynamic-load-apk插件原理解析
  10. 小白做淘客店铺新玩法
  11. 2016年个人简历模板
  12. 整车控制器(VCU)策略及开发流程
  13. rtk手簿Android代码,中海达rtk手机测量软件(Hi-Survey Road)
  14. 基于R语言进行K折交叉验证
  15. T31开发笔记: 使用FTP上传下载文件
  16. 视频字幕识别(百度AI开放平台OCR | python | opencv)
  17. android手机recovery,安卓手机recovery是什么意思?
  18. 地球系统模式(CESM)
  19. Mixly数码管TM1637时钟实验
  20. 基于kubernetes-1.21.5 部署 Rook

热门文章

  1. 高通平台Tag精确寻找进阶教程
  2. Android5.1设备无法识别exFAT文件系统的64G TF卡问题
  3. python刷题软件代码_Python使用docx模块实现刷题功能代码
  4. 电脑退出全屏按哪个键_一款轻量级的电脑看图软件
  5. 获取服务器配置信息的方法
  6. 数学图形(2.10)一种绕在球上的线圈
  7. 数据库操作错误:删除对于用户'root':数据库主体在该数据库中拥有架构,无法删除...
  8. 一个很好的练听力的网站
  9. 脑动力:C语言函数速查效率手册(附DVD光盘1张) [平
  10. stdarg.h的库函数用法小结