#if !defined(LINKED_STACK_H_985552)
#define LINKED_STACK_H_985552
typedef int T; //数据元素类型
struct LNode {T data;LNode* next;
};struct LinkStack {LNode* top; // 栈顶指针int len; // 栈的长度
};LinkStack* LS_Create();
void LS_Free(LinkStack* ls);
void LS_MakeEmpty(LinkStack* ls);
bool LS_IsEmpty(LinkStack* ls);
int LS_Length(LinkStack* ls);
void LS_Push(LinkStack* ls, T x);
bool LS_Pop(LinkStack* ls, T& item);
bool LS_Top(LinkStack* ls, T& item);
void LS_Print(LinkStack* ls);
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "LnkStack.h"
#pragma warning(disable:4996)int main()
{LinkStack* ls=LS_Create();char dowhat[100];while(true) {scanf("%s", dowhat);if (!strcmp(dowhat,"push")) {T x;scanf("%d", &x);LS_Push(ls,x);}else if (!strcmp(dowhat,"pop")) {T item;LS_Pop(ls, item);}else {break;}}int length=LS_Length(ls);printf("Stack length: %d\n", length);LS_Print(ls);LS_Free(ls);
}
#include <stdio.h>
#include <stdlib.h>
#include "LnkStack.h"/*创建栈*/
LinkStack* LS_Create(){LinkStack* ls=(LinkStack*)malloc(sizeof(LinkStack));ls->top = NULL;ls->len = 0;return ls;
}
/*释放栈*/
void LS_Free(LinkStack* ls)
{LNode* curr = ls->top;while(curr) {LNode* next = curr->next;free(curr);curr=next;}free(ls);
}/*将栈变为空栈*/
void LS_MakeEmpty(LinkStack* ls)
{LNode* curr = ls->top;while(curr) {LNode* next = curr->next;free(curr);curr=next;}ls->top = NULL;ls->len = 0;
}/*判断栈是否为空*/
bool LS_IsEmpty(LinkStack* ls)
{// 请在这里补充代码,完成本关任务return ls->top==NULL?true:false;}/*获取栈的长度*/
int LS_Length(LinkStack* ls)
{// 请在这里补充代码,完成本关任务return ls->len;}/*将x进栈*/
void LS_Push(LinkStack* ls, T x)
{// 请在这里补充代码,完成本关任务LNode*link=(LNode*)malloc(sizeof(LNode));link->data=x;link->next=ls->top;ls->top=link;ls->len++;}/*出栈。出栈元素放入item;如果空栈,将返回false*/
bool LS_Pop(LinkStack* ls, T& item)
{// 请在这里补充代码,完成本关任务LNode*link=ls->top;if(LS_IsEmpty(ls)){return false;}item=ls->top->data;ls->top=link->next;free(link);ls->len--;return true;}/*读栈顶元素放入item。如果空栈,将返回false*/
bool LS_Top(LinkStack* ls, T& item)
{// 请在这里补充代码,完成本关任务if(LS_IsEmpty(ls)){return false;}item=ls->top->data;return true;}/*从栈顶到栈底打印各结点数据*/
void LS_Print(LinkStack* ls)
{if (ls->len==0){ printf("The stack: Empty!");return;}printf("The stack (from top to bottom):");LNode* curr=ls->top;while(curr) {printf(" %d", curr->data);curr=curr->next;}// printf("\n");
}

第2关:实现一个链接存储的栈相关推荐

  1. educoder数据结构与算法 线性表 第2关:实现一个链接存储的线性表

    任务描述 本关任务:完成一个链接存储的线性表的小程序. 相关知识 线性表的存储也可以采用链接存储方式来实现.链接存储方式包括单链表.双链表和循环链表等形式. 下面描述了一种基于单链表的线性表实现方案: ...

  2. 头歌平台数据结构与算法 线性表 第2关:实现一个连接存储的线性表

    目录 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务要求针对链接存储方式实现的顺序表完成数据插入操作函数,以实现线性表数据插入功能. 相关知识 线性表的存储也可以采用链接存储方式来实现.链 ...

  3. 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储

    存储结构分四类:顺序存储.链接存储.索引存储 和 散列存储. 顺序结构和链接结构适用在内存结构中. 顺序表每个单元都是按物理顺序排列的,如果你想访问那个单元你可以根据提供的指针等直接访问到需要的东西, ...

  4. 补码原理一个字节存储数值的范围如何计算

    为什么二进制负数在计算机中的存储需要使用补码?一个字节存储数值范围为什么是-128~127?下面我们开始学习. 1.了解补码 什么是原码.反码和补码?负数在计算机中的二进制表示是怎样的?(戳这里查看) ...

  5. 数据结构(C++版) 栈的链接存储结构及实现

    数据结构(C++版) 栈的链接存储结构及实现 #include<iostream.h> struct node {     int data;     node *next; }; cla ...

  6. 设计一个算法,借助栈实现单链表链接顺序的逆转

    设计一个算法,借助栈实现单链表链接顺序的逆转: 程序思路:题目要求为借助栈将单链表中的数据逆置输出,栈的特点就是先进后出,只 需要将单链表中的数据依次存储在栈中,然后将栈中的元素依次取出即可.关键代码 ...

  7. 025-Cinder服务--安装并配置一个本地存储节点(ISCSI)

    一:Cinder提供块级别的存储服务,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷.此服务也会激活管理卷的快照和卷类型的功能,块存储服务通常包含下列组件: ci ...

  8. 接到一个需求,想在页面上加一个链接有多难?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 程序师 来源 | www.techug.com ...

  9. Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差

    7.11(统计:计算标准差)编程练习题5.45计算数字的标准差.本题-计算标准差,使用一个数组存储x的每个数.编写测试程序,提示用户输入10个数字,显示平均值和标准差 题目 题目描述与运行示例 破题 ...

最新文章

  1. 我又被学弟学妹倒挂了
  2. rbac 一个用户对应多个账号_电商后台系统:管理后台之账号管理(一)
  3. Python报错TypeError: 'str' object is not callable
  4. CentOS下搭建Squid代理服务器
  5. python nlp包_StanfordNLP,让你在 Python 里一手掌握 53 种自然语言分析
  6. 文字超出两行 则显示。。。
  7. python random randint_python中random.randint(1,100)随机数中包不包括1和100
  8. echarts画中国地图!
  9. 一篇总结得超全的前端进阶文章!入门、技巧、方法、书籍、网站...一步到位!
  10. Atitit mysql数据库自定义异常在java里面的捕获与处理推荐标准与规范
  11. 《应用商务统计分析》第五章 定序回归
  12. 怎么对视频进行简单补帧
  13. pink老师 JS p61课后作业
  14. QT 析构的报错Cannot send events to objects owned by a different thread.
  15. Android Notification 详解——基本操作
  16. MySQL数据库(三)-表行的语句使用
  17. 盘点2019年PHP高级开发工程师面试题及答案汇总
  18. Docker私有仓库与Harbor部署使用
  19. 3D彩票系统,面向对象编程版
  20. 国内外比较出名的做MySQL的公司以及原因

热门文章

  1. 百面机器学习之模型评估
  2. Numpy中矩阵运算
  3. 技术13期:一文读懂Flink的流式处理及窗口理解
  4. 从零开始学习Deep SORT+YOLO V3进行多目标跟踪(附代码)
  5. 用OpenCV搭建活体检测器
  6. 网络安全与机器学习(二):网络安全任务如何结合机器学习?
  7. Java基础知识回顾之四 ----- 集合List、Map和Set
  8. JDK, JRE和JVM的区别与联系
  9. 当对象或对象属性为空时,如何安全给对象或对象属性添加默认值
  10. docker centos 无法用systemctl 启动服务的问题