【数据结构】C语言栈的基本操作
#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语言栈的基本操作相关推荐
- 字符串基本操作 c语言,数据结构C语言字符串的基本操作.doc
数据结构C语言字符串的基本操作 串的基本操作 #include #include #include #define m 100 typedef struct{ char ch[m]; int leng ...
- 【C++】【数据结构】顺序栈的基本操作(初始化、入栈、出栈、取栈顶元素、遍历输出栈)的算法实现附全代码
C++实现顺序栈的算法+步骤(附全代码): 使用c++完成数据结构顺序栈的基本操作,包括(初始化.入栈.出栈.取栈顶元素.遍历输出栈等),可直接编译运行. 顺序栈的定义如下: #define MAXS ...
- 三星手机电池循环清零代码_数据结构(C语言)-循环队列基本操作
队列是一种先进先出(first in first out,FIFO)的线性表,是一种常用的数据结构. 它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列 ...
- C语言 栈的基本操作 栈的实现
#include <stdio.h> #include <stdlib.h> #define STACK_SIZE 10 #define OK 1 #define ERROR ...
- 数据结构之【栈】的基本操作C语言实现
引题: 很多人都把[栈]描述成[弹匣],但我总感觉有点不恰当,因为弹匣从上端[装弹]之后,子弹总是在匣的上层:而元素[进栈]之后,总在栈的下面. 我觉得还是描述成[从下往上 ...
- 数据结构源码笔记(C语言):栈的基本操作
#include <stdio.h> #define MaxSize 100typedef char ElemType;typedef struct {char stack[MaxSize ...
- c语言栈的实现以及操作_数据结构之链栈基本操作的实现详解(C语言描述)
迎新过后,来带领你好好学习的小软准时归来,快带着上次学习链表操作的记忆和我开启新的旅程吧: 链栈:就是栈的链式存储结构,简称链栈. 首先我们要考虑的就是链栈的存储结构,由于栈只是在栈顶进行插入和删除操 ...
- c语言 栈结构存放数据类型,数据结构——栈的详解
栈和队列是两种重要的线性结构,从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表的子集.他们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,他们是和线 ...
- sdut 3335 数据结构实验之栈与队列八:栈的基本操作
数据结构实验之栈与队列八:栈的基本操作 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descri ...
最新文章
- Alpha Go 之父恩师Tomaso Poggio:深度学习需要从炼金术走向化学
- R语言ggplot2可视化NHANES数据集年龄和身高的关系并按照性别因子分析男性和女性的差异
- 智源大会参会指南:4天 100+场顶尖报告,硬核高密度,如何才能不留遗憾?
- Linux网络篇基础知识
- Laravel自定义分页样式
- Python学习笔记:Day1-2 开发环境搭建
- r语言 rgl 强制过程中_一个R语言中操纵矢量空间数据的标准化工具—sf
- php while for 性能,php的foreach,while,for的性能比较
- 锐捷官方提供122套实验题.
- 网站开发和企业级开发有什么区别?
- 阿里技术专家光锥:亿级长连网关的云原生演进之路
- UIKeyboard键盘相关知识点
- 统计相关系数r与r2的区别_什么是相关系数? 统计解释中的r值
- linux虚拟机能通显卡吗,英伟达 GeForce 游戏显卡正式支持虚拟机传递功能,可以完全调用...
- python客户端自动化测试滚轮移到最上面_Python+Appium自动化测试(8)-swipe()滑动页面...
- jQuery 鼠标事件
- (10)Zoomit完整快捷键总结:PC端PPT演示辅助工具
- 软件工程的知识思维导图
- EasyCamera轻松集成Camera拍照
- 支付宝小程序需要服务器吗,开通支付宝小程序收款功能-小程序商城收款后钱在哪-微信小程序需要备案吗...