#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
//定义节点
struct Node
{int data;struct Node *next;
};
typedef Node StackNode;
//定义栈struct Stack
{StackNode *top;StackNode *base;
};typedef Stack SqStack;//定义创建栈的函数int InitStack(SqStack *S){S->base = (StackNode*)malloc(sizeof(Node));if (!S->base){printf("error");exit(1);}S->top = S->base;     S->top->next=NULL;return 0;}//定义压栈函数int PushStack(SqStack *S){int e;StackNode *ps;ps = (StackNode *)malloc(sizeof(Node));if (!ps){printf("error");exit(1);}printf("请输入你需要压入栈的数:");scanf_s("%d", &e);ps->data = e;ps->next = S->top;S->top = ps;return 0;}//定义弹栈函数int PopStack(SqStack *S){int e;StackNode *ps;ps = S->top;S->top = S->top->next;e = ps->data;free(ps);return e;}//定义栈遍历函数int TravelStack(SqStack *S){StackNode *ps;ps = S->top;while (ps != S->base){printf("数据为:%d\n", ps->data);ps = ps->next;}return 0;}//定义判断栈是否为空函数bool EmptyStack(SqStack *S){StackNode *ps;ps = S->top;if (ps == S->base){return true;}else{return false;}}//定义清空栈的函数int ClearStack(SqStack *S){StackNode *ps;ps = S->top;while (S->top != S->base){S->top = S->top->next;free(ps);}return 0;}//主函数int main(){int i,dec,input,DEC;SqStack *stack;stack = new Stack;InitStack(stack);do{printf("请选择你需要的基本操作:\n");printf("1************往栈中加入数据\n");printf("2************遍历该栈\n");printf("3************清空该栈\n");printf("4************删除栈顶元素\n");scanf_s("%d", &i);switch (i){case 1:{printf("是否想往栈中输入数据?是选择1/否选择2\t");scanf_s("%d", &dec);while (dec == 1){PushStack(stack);printf("是否继续输入数据?是选择1/否选择2\t");scanf_s("%d", &input);dec = input;}printf("你输入的数据为:\n");TravelStack(stack);break;}case 2:{TravelStack(stack);break;}case 3:{ClearStack(stack);if (EmptyStack(stack)){printf("该栈已经空!");}else{printf("该栈不为空!");};break;}case 4:{int ReturnData;ReturnData = PopStack(stack);break;}}printf("是否要继续?是选择1/否选择2:\t");scanf_s("%d", &DEC);} while (DEC == 1);}

转载于:https://www.cnblogs.com/code-wangjun/p/4356528.html

【数据结构】C语言栈的基本操作相关推荐

  1. 字符串基本操作 c语言,数据结构C语言字符串的基本操作.doc

    数据结构C语言字符串的基本操作 串的基本操作 #include #include #include #define m 100 typedef struct{ char ch[m]; int leng ...

  2. 【C++】【数据结构】顺序栈的基本操作(初始化、入栈、出栈、取栈顶元素、遍历输出栈)的算法实现附全代码

    C++实现顺序栈的算法+步骤(附全代码): 使用c++完成数据结构顺序栈的基本操作,包括(初始化.入栈.出栈.取栈顶元素.遍历输出栈等),可直接编译运行. 顺序栈的定义如下: #define MAXS ...

  3. 三星手机电池循环清零代码_数据结构(C语言)-循环队列基本操作

    队列是一种先进先出(first in first out,FIFO)的线性表,是一种常用的数据结构. 它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列 ...

  4. C语言 栈的基本操作 栈的实现

    #include <stdio.h> #include <stdlib.h> #define STACK_SIZE 10 #define OK 1 #define ERROR ...

  5. 数据结构之【栈】的基本操作C语言实现

    引题:        很多人都把[栈]描述成[弹匣],但我总感觉有点不恰当,因为弹匣从上端[装弹]之后,子弹总是在匣的上层:而元素[进栈]之后,总在栈的下面.        我觉得还是描述成[从下往上 ...

  6. 数据结构源码笔记(C语言):栈的基本操作

    #include <stdio.h> #define MaxSize 100typedef char ElemType;typedef struct {char stack[MaxSize ...

  7. c语言栈的实现以及操作_数据结构之链栈基本操作的实现详解(C语言描述)

    迎新过后,来带领你好好学习的小软准时归来,快带着上次学习链表操作的记忆和我开启新的旅程吧: 链栈:就是栈的链式存储结构,简称链栈. 首先我们要考虑的就是链栈的存储结构,由于栈只是在栈顶进行插入和删除操 ...

  8. c语言 栈结构存放数据类型,数据结构——栈的详解

    栈和队列是两种重要的线性结构,从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表的子集.他们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,他们是和线 ...

  9. sdut 3335 数据结构实验之栈与队列八:栈的基本操作

    数据结构实验之栈与队列八:栈的基本操作 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descri ...

最新文章

  1. Alpha Go 之父恩师Tomaso Poggio:深度学习需要从炼金术走向化学
  2. R语言ggplot2可视化NHANES数据集年龄和身高的关系并按照性别因子分析男性和女性的差异
  3. 智源大会参会指南:4天 100+场顶尖报告,硬核高密度,如何才能不留遗憾?
  4. Linux网络篇基础知识
  5. Laravel自定义分页样式
  6. Python学习笔记:Day1-2 开发环境搭建
  7. r语言 rgl 强制过程中_一个R语言中操纵矢量空间数据的标准化工具—sf
  8. php while for 性能,php的foreach,while,for的性能比较
  9. 锐捷官方提供122套实验题.
  10. 网站开发和企业级开发有什么区别?
  11. 阿里技术专家光锥:亿级长连网关的云原生演进之路
  12. UIKeyboard键盘相关知识点
  13. 统计相关系数r与r2的区别_什么是相关系数? 统计解释中的r值
  14. linux虚拟机能通显卡吗,英伟达 GeForce 游戏显卡正式支持虚拟机传递功能,可以完全调用...
  15. python客户端自动化测试滚轮移到最上面_Python+Appium自动化测试(8)-swipe()滑动页面...
  16. jQuery 鼠标事件
  17. (10)Zoomit完整快捷键总结:PC端PPT演示辅助工具
  18. 软件工程的知识思维导图
  19. EasyCamera轻松集成Camera拍照
  20. 支付宝小程序需要服务器吗,开通支付宝小程序收款功能-小程序商城收款后钱在哪-微信小程序需要备案吗...

热门文章

  1. 他失明40年,只因戴上了这副护目镜,现在竟能数清斑马线 | Nature子刊
  2. 马斯克雇机器狗勘察火箭爆炸现场,网友:《黑镜》现实版
  3. 意念控制成现实:不开口,不动手,“瘫着”就能打游戏
  4. 快手在直播间里养起了AI宠物,连柳岩、大鹏都爱不释手
  5. PHP str_word_count
  6. NSStirng、NSArray、以及枚举(Method小集合)
  7. F5 bigip.conf配置问题
  8. Java创建数组的三种方法
  9. Rabbitmq基本框架和安装(1)
  10. Bootstrap3 栅格系统-简介