数据结构——栈(C语言实现)
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<malloc.h>
// 栈结构的定义
typedef struct _stack {
int size; // 栈存储空间的尺寸
int* base; // 栈基址
int* sp; // 栈顶
} stack; void init(stack* s, int n) {
s->base = (int*)malloc(sizeof(int)*n);
s->size = n;
s->sp = s->base;
} void push(stack* s, int val) {
if(s->sp - s->base == s->size) {
puts("none");
exit(1);
}
*s->sp++ = val;
} int pop(stack* s) {
if(s->sp == s->base) {
puts("none");
exit(2);
}
return *--s->sp;
}
int peek(stack*s) {
if(s->sp == s->base) {
puts("none");
exit(2);
} return *(s->sp-1);
} int empty(stack* s) {
return s->sp == s->base;
} void clean(stack* s) {
if(s->base)
free(s->base);
} int main(void) {
stack s;
int i,n;
int num;
char str[30];
init(&s, 1000);
while(1) { scanf("%s",str);
if(strcmp(str,"push")==0) {
scanf("%d",&num);
push(&s, num);
} else if(strcmp(str,"top")==0) {
printf("%d\n", peek(&s));
} else if(strcmp(str,"pop")==0) {
printf("%d\n", pop(&s));
} else if(strcmp(str,"clear")==0) {
empty(&s);
} else if(strcmp(str,"exit")==0) {
clean(&s); break;
}
}
return 0;
}
数据结构——栈(C语言实现) - yyf的博客 - CSDN博客 https://blog.csdn.net/qq_18860653/article/details/80388025
数据结构——栈(C语言实现)的更多相关文章
- 数据结构---栈C语言实现
#include <stdio.h> #include <stdlib.h> #define uchar unsigned char #define uint unsigned ...
- 数据结构算法C语言实现(八)--- 3.2栈的应用举例:迷宫求解与表达式求值
一.简介 迷宫求解:类似图的DFS.具体的算法思路可以参考书上的50.51页,不过书上只说了粗略的算法,实现起来还是有很多细节需要注意.大多数只是给了个抽象的名字,甚至参数类型,返回值也没说的很清楚, ...
- 数据结构算法C语言实现(七)--- 3.1栈的线性实现及应用举例
一.简述 栈,LIFO.是操作受限的线性表,和线性表一样有两种存储表示方法.下面以顺序存储为例,实现. 二.ADT 暂无. 三.头文件 //3_1.h /** author:zhaoyu email: ...
- C语言数据结构-栈的实现-初始化、销毁、长度、取栈顶元素、查找、入栈、出栈、显示操作
1.数据结构-栈的实现-C语言 #define MAXSIZE 100 //栈的存储结构 typedef struct { int* base; //栈底指针 int* top; //栈顶指针 int ...
- 数据结构算法C语言实现(十)--- 3.3栈与递归的实现
一.简介 汉诺塔问题是递归的一个典型例子,而且书上的讲解很详细,对理解C语言函数及函数传参的工作机制很有帮助,值得一看.而且,递归在我看来和分治.DP.贪心等一样是十分优美的思想,值得学习!!! 二. ...
- 数据结构与算法之顺序栈C语言实现
顺序栈是一种特殊的顺序表,主要操作是入栈和出栈.将顺序表加一些特定限制,就成了顺序栈. 注: 1.顺序栈C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简 ...
- 数据结构算法C语言实现(二十七)--- 7.2图的遍历
一.简述 栈与队列,DFS与BFS.仅以连接表为例实现. 二.头文件 BFS要用到的头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@g ...
- 数据结构算法C语言实现(二十)--- 6.3.1遍历二叉树
一.简述 二叉树的遍历主要是先序.中序.后序及对应的递归和非递归算法,共3x2=6种,其中后序非递归在实现上稍复杂一些.二叉树的遍历是理解和学习递归及体会栈的工作原理的绝佳工具! 此外,非递归所用的栈 ...
- 数据结构算法C语言实现(十二)--- 3.4循环队列&队列的顺序表示和实现
一.简述 空队列的处理方法:1.另设一个标志位以区别队列是空还是满:2.少用一个元素空间,约定以队列头指针在队尾指针下一位置上作为队列呈满的状态的标志. 二.头文件 //3_4_part1.h /** ...
随机推荐
- Go之类型判断
boy := util.Boy{util.Person{"Eric", 19, "boy"}, "1"} var boyClone inte ...
- NFS 常见报错
问题:客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主属组都为nobody解决方法:这种情况会出现在 centos6 或 NFS 4版本中,只要在挂载的时候加上 -o nfsve ...
- MPAndroidChart market右边显示不全问题
//lineChart.setMarkerView(new CustomChartMarkerView(activity, R.layout.line_chart_maker));//add mark ...
- java接口定义的静态方法和默认如何在类实现的时候使用
在 JDK1.8,允许我们给接口添加两种非抽象的方法实现: 1.默认方法,添加 default 修饰即可: 2.静态方法,使用 static 修饰:示例如下: 这样可以实现接口的增强,那我们在类实现接 ...
- cygwin设置NDK环境变量ANDROID_NDK_ROOT
cygwin安装目录下的“home/当前用户名”的.bash_profile下以UltraEdit(Unix方式)或者eclipse打开,最后添加一句: ANDROID_NDK_ROOT=/cygdr ...
- Esper学习之十五:Pattern(二)
上一篇开始了新一轮语法——Pattern的讲解,一开始为大家普及了几个基础知识,其中有说到操作符.当时只是把它们都列举出来了,所以今天这篇就是专门详解这些操作符的,但是由于篇幅限制,本篇先会讲几个,剩 ...
- spring cache 详解
Spring使用Cache 从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管理的支持.Spring Cache是作用在方法上的,其核心思想是这样的:当我 ...
- 【python系列】python初识
前言 Python是一种高层次,解释,互动性和面向对象的脚本语言,Python被设计成具有很强的可读性语言.它采用应用关键字,而其他语言一般使用标点符号,并且具有比其他语言有较少的语法结构. Pyth ...
- Android 使用tomcat搭建HTTP文件下载服务器
上一篇: Android 本地搭建Tomcat服务器供真机测试 1.假设需要下载的文件目录是D:\download1(注意这里写了个1,跟后面的名称区分) 2.设置 tomcat 的虚拟目录.在 {t ...
- iPhone X 上删除白条
方案一:纯色背景的情况下,解决方案就是background-color在您的body代码上设置属性: 方案二:视口入,viewport-fit=cover: <meta name="v ...