#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语言实现)的更多相关文章

  1. 数据结构---栈C语言实现

    #include <stdio.h> #include <stdlib.h> #define uchar unsigned char #define uint unsigned ...

  2. 数据结构算法C语言实现(八)--- 3.2栈的应用举例:迷宫求解与表达式求值

    一.简介 迷宫求解:类似图的DFS.具体的算法思路可以参考书上的50.51页,不过书上只说了粗略的算法,实现起来还是有很多细节需要注意.大多数只是给了个抽象的名字,甚至参数类型,返回值也没说的很清楚, ...

  3. 数据结构算法C语言实现(七)--- 3.1栈的线性实现及应用举例

    一.简述 栈,LIFO.是操作受限的线性表,和线性表一样有两种存储表示方法.下面以顺序存储为例,实现. 二.ADT 暂无. 三.头文件 //3_1.h /** author:zhaoyu email: ...

  4. C语言数据结构-栈的实现-初始化、销毁、长度、取栈顶元素、查找、入栈、出栈、显示操作

    1.数据结构-栈的实现-C语言 #define MAXSIZE 100 //栈的存储结构 typedef struct { int* base; //栈底指针 int* top; //栈顶指针 int ...

  5. 数据结构算法C语言实现(十)--- 3.3栈与递归的实现

    一.简介 汉诺塔问题是递归的一个典型例子,而且书上的讲解很详细,对理解C语言函数及函数传参的工作机制很有帮助,值得一看.而且,递归在我看来和分治.DP.贪心等一样是十分优美的思想,值得学习!!! 二. ...

  6. 数据结构与算法之顺序栈C语言实现

    顺序栈是一种特殊的顺序表,主要操作是入栈和出栈.将顺序表加一些特定限制,就成了顺序栈. 注: 1.顺序栈C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简 ...

  7. 数据结构算法C语言实现(二十七)--- 7.2图的遍历

    一.简述 栈与队列,DFS与BFS.仅以连接表为例实现. 二.头文件 BFS要用到的头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@g ...

  8. 数据结构算法C语言实现(二十)--- 6.3.1遍历二叉树

    一.简述 二叉树的遍历主要是先序.中序.后序及对应的递归和非递归算法,共3x2=6种,其中后序非递归在实现上稍复杂一些.二叉树的遍历是理解和学习递归及体会栈的工作原理的绝佳工具! 此外,非递归所用的栈 ...

  9. 数据结构算法C语言实现(十二)--- 3.4循环队列&队列的顺序表示和实现

    一.简述 空队列的处理方法:1.另设一个标志位以区别队列是空还是满:2.少用一个元素空间,约定以队列头指针在队尾指针下一位置上作为队列呈满的状态的标志. 二.头文件 //3_4_part1.h /** ...

随机推荐

  1. linux下查看当前目录属于哪个分区?

    下班之前写哈今天用的一个新命令. df -h /opt/test

  2. Ldap 漏洞

    0x00 Ldap安装 官网地址:https://www.userbooster.de/en/download/openldap-for-windows.aspx 在win2008上安装,一路Next ...

  3. python virtualenv安装说明

    环境说明: virtualenv安装: 第一步,创建目录code: 第二步,创建一个独立的Python运行环境,命名为venv: 新建的Python环境被放到当前目录下的venv目录. 第三步,有了v ...

  4. SaltStack Grains 和 Pillar

    Grains: (1) grains 是服务器的一系列粒子信息,也就是服务器的一系列物理,软件环境信息(2) grains 是 minion 启动时收集到的一些系统信息,比如操作系统版本.内核版本.C ...

  5. 使用java连接数据库以后显示“ Establishing SSL connection without server's identity verification is not recommended”的警告如何解决

    今天写了一段查询数据库的操作,如下 package MySQL; import java.sql.*; public class MySQL { //JDBC驱动名以及数据库URL static fi ...

  6. DLL注入之Appinit_Dlls

    AppInit_DLLs is a mechanism that allows an arbitrary list of DLLs to be loaded into each user mode p ...

  7. Java连接SqlServer2008数据库

    Java连接SqlServer2008数据库 首先下载JDBC:下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599 下 ...

  8. PHP关于=>和->以及::的用法

    1.=>的用法 在php中数组默认键名是整数,也可以自己定义任意字符键名(最好是有实际意义),如: $css=array('style'=>'0',‘color’=>‘green‘) ...

  9. DataTable进行排序Asc升序,Desc降序

    DataTable dt = new DataTable(); DataView dv = dt.DefaultView; dv.Sort = "XXX Asc"; dt=dv.T ...

  10. swagger环境搭建

    下面所用工具下载   http://editor.swagger.io/#/  demo   一.安装 swagger editor   说明:安装swagger前需要安装node工具   工具安装 ...