用链栈表的方式实现输入abcde,输出edcba操作,期末数据结构程序设计

文章目录

  • 用链栈表的方式实现输入abcde,输出edcba操作,期末数据结构程序设计
    • 1.链栈的定义
    • 2.链栈的初始化
    • 3.链栈的销毁
    • 4.判空操作
    • 5.进栈
    • 6.出栈
    • 7.读取栈顶元素
    • 源代码:
    • 运行结果展示:
      • 互关噢!共同学习进步

1.链栈的定义

typedef struct LNode {ElemType data;struct LNode* next;
}LNode,*LinkList;

2.链栈的初始化

void InitStack(LinkList& S) {S = (LNode*)malloc(sizeof(LNode));S->next = NULL;
}

3.链栈的销毁

void DestroyStack(LinkList& S) {LNode* p = S->next;while (p != NULL) {free(S);S = p;p = p->next;}free(S);
}

4.判空操作

bool StackEmpty(LinkList S) {return (S->next == NULL) ? true : false;
}

5.进栈

bool Push(LinkList& S,ElemType x) {LNode* p;p = (LNode*)malloc(sizeof(LNode));p->data = x;p->next = S->next;S->next = p;return true;
}

6.出栈

bool Pop(LinkList& S, ElemType& x) {if (S->next == NULL)return false;LNode* p;p = S->next;x = p->data;S->next = p->next;free(p);return true;
}

7.读取栈顶元素

bool GetTop(LinkList S, ElemType& x) {if (S->next == NULL)return false;x = S->next->data;return true;
}

源代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define length 5
typedef char ElemType;
//链栈的定义
typedef struct LNode {ElemType data;struct LNode* next;
}LNode,*LinkList;
//链栈的初始化
void InitStack(LinkList& S) {S = (LNode*)malloc(sizeof(LNode));S->next = NULL;
}
//链栈的销毁
void DestroyStack(LinkList& S) {LNode* p = S->next;while (p != NULL) {free(S);S = p;p = p->next;}free(S);
}
//判空操作
bool StackEmpty(LinkList S) {return (S->next == NULL) ? true : false;
}
//进栈
bool Push(LinkList& S,ElemType x) {LNode* p;p = (LNode*)malloc(sizeof(LNode));p->data = x;p->next = S->next;S->next = p;return true;
}
//出栈
bool Pop(LinkList& S, ElemType& x) {if (S->next == NULL)return false;LNode* p;p = S->next;x = p->data;S->next = p->next;free(p);return true;
}
//读取栈顶元素
bool GetTop(LinkList S, ElemType& x) {if (S->next == NULL)return false;x = S->next->data;return true;
}
int main() {ElemType x;LinkList S;char ch\[length\];int i=0;printf("1.初始化栈\n");InitStack(S);printf("2.栈为:%s\n", (StackEmpty) ? "空" : "非空");printf("3.请依次输入入栈元素:\n");for (int j = 0; j < length; j++) {scanf("%c", &ch\[j\]);   //scanf遇到回车才会结束,遇到空格不会结束}while (i < length) {Push(S, ch\[i\]);i++;}printf("4.元素出栈顺序为:\n");while (!StackEmpty(S)) {Pop(S, x);printf("%c\t", x);}printf("\n");printf("5.销毁栈表!");DestroyStack(S);
}

运行结果展示:

输入:abcde
输出:edcba

互关噢!共同学习进步

文章目录

  • 用链栈表的方式实现输入abcde,输出edcba操作,期末数据结构程序设计
    • 1.链栈的定义
    • 2.链栈的初始化
    • 3.链栈的销毁
    • 4.判空操作
    • 5.进栈
    • 6.出栈
    • 7.读取栈顶元素
    • 源代码:
    • 运行结果展示:
      • 互关噢!共同学习进步

(c语言)用链栈表的方式实现输入abcde,输出edcba操作——期末数据结构程序设计相关推荐

  1. (c语言数据结构)用链式队列的方式实现输入12345,输出12345操作——期末数据结构程序设计

    用链式队列的方式实现输入12345,输出12345操作 文章目录 用链式队列的方式实现输入12345,输出12345操作 1.队列的定义 2.队列的初始化 3.判空操作 4.入队操作 5.出队操作 6 ...

  2. (c语言数据结构)用顺序队列的方式实现输入12345,输出12345操作——期末数据结构程序设计

    用顺序队列的方式实现输入123456,输出12345操作 文章目录 用顺序队列的方式实现输入123456,输出12345操作 1.队列的定义 2.队列的初始化 3.判空操作 4.入队操作 5. 出队操 ...

  3. c语言isempty函数代码,使用C语言实现链栈以及initialize,push,pop,isEmpty,getlength,destory等操作...

    本文使用了链栈,相对于顺序栈,链栈具有通常情况下不会出现栈满的情况 链栈和链表很相似. 由于栈的先进后出特性,栈在很多地方都很适用,比如 括号匹配,算术表达式求职,路径判断(走迷宫游戏)高级点的有函数 ...

  4. 刁肥宅手笔:纯C语言利用链栈实现从后缀表达式Array中顺序输入表达式并求值

    链栈+后缀表达式求值算法,借用我自己上次C语言写的链栈,详细实现代码如下: 头文件C_Stack.h: /*C_Stack.h*/#ifndef C_STACK_H_INCLUDED #define ...

  5. 使用C语言实现链栈(带头结点和不带头结点)

    目录 1.链栈 2.链栈的相关操作 (1)数据结构定义 (2)初始化和销毁 (3)入栈 (4)出栈 (5)主函数 (6)测试 1.链栈 链栈和单链表是差不多的,只是规定了入栈和出栈只能在表头一端进行( ...

  6. 数据结构(C语言版)——链栈(代码版)

    一.代码 #include <stdio.h> #include <stdlib.h>#define OK 1 #define ERROR 0typedef int Statu ...

  7. C语言注释风格(函数、功能、输入、输出、返回)

    C语言编程规范-注释 规则: 1:一般情况下,源程序有效注释量必须在20%以上.     说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确.易懂. ...

  8. Lua语言面向对象之复制表的方式面向对象

    // clone表table function clone(tab)-- 构造一个空tablelocal ins = {}for key, var in pairs(tab) doins[key] = ...

  9. printf输出字符串_C语言入门必学第一课,学习“输入与输出”!

    数据输入 编写程序的主要目的就是为了处理数据.数据从哪里来?数据的来源有很多种方式,如从磁盘文件中读取数据.从数据库中读取数据.从网页中抓取数据等,还有一种原始的方式就是从键盘输入数据. 在C语言中, ...

最新文章

  1. 前苹果副总裁:20-40-60法则
  2. 基于c#的相关性分析_开源Math.NET基础数学类库使用(11)C#计算相关系数
  3. Ubuntu 18.04 固定ip 设置方法
  4. gVIM+zencoding快速开发HTML/CSS/JS(适用WEB前端)
  5. 远程图片保存到服务器 php,保存远程图片到本地服务器几种方法[php,asp]网
  6. php mysql insert 变量,php – 在blueimp / jquery-file-upload上添加更多自定义变量给mysql insert...
  7. .NET Core中的CSV解析库
  8. 字符串编辑距离(转载)
  9. android动态设置文本居中显示图片,Android DrawableTextView图片文字居中显示实例
  10. python filter函数_python基础——filter函数
  11. 吴恩达 深度学习 编程作业(1-3)- Planar data classification with one hidden layer(平面花形状)
  12. MIT研发“读心机”:不开口也能对话,人生开挂全靠它
  13. undefined reference to symbol 'dlsym@@GLIBC_2.17' libdl.so: error adding symbols: DSO missing from c
  14. 恭喜你!看到了这篇靠谱的12款CAM软件测评(下篇)
  15. centos7搭建apache服务器
  16. asp医院病历管理系统
  17. wordpress 更改域名搬家全攻略(转)
  18. EVA4400存储虚拟机+数据库数据恢复成功案例
  19. SOA精华的内容和实用的知识
  20. 基于PHP+小程序(MINA框架)+Mysql数据库的共享充电桩小程序系统设计与实现

热门文章

  1. iOS Swift 应用内跳转第三方地图导航路线 及地图坐标系转换
  2. 中国电信携手三星,心系天下三星W2019打造风范之作
  3. 蓝桥杯Java——算法训练(ALGO997-1007)
  4. nginx: [alert] could not open error log file: open() /usr/local/var/log/nginx/error.log
  5. (菜鸟要飞系列)四,基于Asp.Net MVC5的后台管理系统(zTree绑定Json数据生成树)...
  6. php一个猴子摘桃子,猴子摘桃子看图写话
  7. html从入门到精通前锋,战术干货 | 从入门到精通,支点中锋-锋线球员搭配个人向深度解析!下篇...
  8. 三星、LG等部分手机调用相机拍照的模糊问题和拍照选取相册图片旋转问题
  9. Java 实现四则运算 附实现代码
  10. MySQL 的create table as 与like 的使用