栈测试代码笔记如下:

 #include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define SIZE 10 typedef struct Stack
{
char *name[SIZE]; //栈的容量 int top; //栈顶
}STACK,*PSTACK; // struct Stack * //1.初始化栈
void Init_Stack(PSTACK S) //这里只需要一个参数 把栈传进来初始化
{
S->top = ; //栈顶是从第0个下标开始 for (int i = ; i < SIZE; i++)
{
S->name[i] = NULL;
}
} //2.入栈操作
void Push_Stack(PSTACK S, char *data) //参数1:表明插入的栈 参数2: 要插入的数据
{
//2.1 判断栈是否是满的 如果是满的就退出 满了你还要插入 会报错
if (S->top >= SIZE)
{
printf("栈满!无法继续插入\n");
return; //结束这个函数.
} //2.2 栈没有满
//S->name[S->top] = data; // 这样写有一个bug data是一个堆内存 这是浅拷贝问题 会造成内存泄漏. C++讲到
int len = strlen(data); //我随便申请一个内存不可以吗? 后果:会浪费 或者不够用 1W 现在只需要暂用10个内存大小
S->name[S->top] = (char *)malloc(sizeof(char)*len + ); //name它是一个指针数组 申请多大要按照你传进来的参数定制
//+1 是防止斜杠0
strcpy(S->name[S->top], data); //字符串拷贝函数
S->top++; //在执行插入操作之后 我的top要+1
} //3.获取栈顶元素
char * GetStackTop(PSTACK S)
{
return S->name[S->top-];
} //4. 出栈
void Pop_Stack(PSTACK S)
{
//这里我就不判断 判断是不是空 free(S->name[S->top-]); S->top--;
} //5.判断是不是空的栈
int Stack_Empty(PSTACK S) //函数返回1 说明什么栈是空的 如果返回0说明栈是有元素的
{
return S->top == ; //等于0说明栈是空的
} int main()
{
STACK MyStack; //定义一个栈
Init_Stack(&MyStack); //调用初始化函数给栈初始化
//入栈
Push_Stack(&MyStack, "张三");
Push_Stack(&MyStack, "李四");
Push_Stack(&MyStack, "驴");
Push_Stack(&MyStack, "王麻子");
Push_Stack(&MyStack, "Danny");
Push_Stack(&MyStack, "小小");
// 出栈
while (!Stack_Empty(&MyStack)) //如果栈不是空的 就一直循环
{
printf(" %s\t", GetStackTop(&MyStack)); //打印栈顶元素 如果都不出栈 栈顶是不是永远都是广广
//在这里要进行出栈操作
Pop_Stack(&MyStack); //都出栈完之后 栈为空 结束循环
}
printf("\n");
return ;
}

2019-03-31  21:04:47

C++学习(三十二)(C语言部分)之 栈的更多相关文章

  1. ElasticSearch7.3学习(三十二)----logstash三大插件(input、filter、output)及其综合示例

    1. Logstash输入插件 1.1 input介绍 logstash支持很多数据源,比如说file,http,jdbc,s3等等 图片上面只是一少部分.详情见网址:https://www.elas ...

  2. java jvm学习笔记十二(访问控制器的栈校验机制)

    欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 本节源码:http://download.csdn.net/detail/yfqnihao/4863854 这一节,我们 ...

  3. Java开发学习(三十二)----Maven多环境配置切换与跳过测试的三种方式

    一.多环境开发 我们平常都是在自己的开发环境进行开发, 当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用, 等测试人员测试通过后,我们会将项目部署到生成环境上线使用. 这个时候就有一 ...

  4. Salesforce LWC学习(三十二)实现上传 Excel解析其内容

    本篇参考:salesforce lightning零基础学习(十七) 实现上传 Excel解析其内容 上一篇我们写了aura方式上传excel解析其内容.lwc作为salesforce的新宠儿,逐渐的 ...

  5. ballerina 学习 三十二 编写安全的程序

      ballerina编译器已经集成了部分安全检测,在编译时可以帮助我们生成错误提示,同时ballerina 标准库 已经对于常见漏洞高发的地方做了很好的处理,当我们编写了有安全隐患的代码,编译器就已 ...

  6. python学习 (三十二) 异常处理

    1 异常: def exceptionHandling(): try: a = b = d = a / b print(d) except ZeroDivisionError as ex: print ...

  7. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

  8. “全栈2019”Java多线程第三十二章:显式锁Lock等待唤醒机制详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  9. python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL

    python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...

  10. “全栈2019”Java第三十二章:增强for循环Foreach语法

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. windows中mysql5.7保存emoji表情

    1.找到my.ini文件,修改一下配置: [client] default-character-set=utf8mb4 [mysqld] character-set-client-handshake ...

  2. C#通过shell32获取文件详细备注信息

    1.从系统Window/System32文件夹中Copy出 Shell32.dll Com组件 将Shell32.dll文件引用到项目中,并设置“嵌入互操作类型”为false http://blog. ...

  3. sqlalchemy(一)常用连接参数及包

    简介: 本文默认你已经有了一定的数据库基础.我们不喜欢写原生SQL语句,那个写着费劲,日常开发时候,我们怎么CRUD数据库呢?一般使用ORM,对象关系映射(英语:Object Relational M ...

  4. Linux命令----uname查看系统信息

    uname就是UNIXname的缩写 1.uname可以查询操作系统信息 [root@yuan ~]# uname Linux 2.uname -n显示系统的主机名 [root@yuan ~]# un ...

  5. LeetCode难度与出现频率

    转载自:LeetCode Question Difficulty Distribution               1 Two Sum 2 5 array sort         set Two ...

  6. Android : 代码多维度管理(产品风味) - flavorDimensions & productFlavors

    一.关于配置产品风味 Android studio 升级到3.0之后,gradle增加了多维度管理配置,便于同一个项目中创建应用的不同版本,分别管理依赖项并签署配置.创建产品风味与创建构建类型类似:只 ...

  7. C++基础知识:STL简介

    1.标准模板库STL ― STL , 即 : Standard Template Library , 是 C++的一部分― STL是常用数据结构和算法的集合― STL的目标是标准化组件 , 提高开发效 ...

  8. SQL-31 获取select * from employees对应的执行计划

    题目描述 获取select * from employees对应的执行计划 explain select * from employees explain  用于获得表的所有细节

  9. Serial interface (RS-232)

    转自:http://www.fpga4fun.com/SerialInterface.html A serial interface is a simple way to connect an FPG ...

  10. spring的配置文件解析(转)

    http://www.cnblogs.com/as-dreamer/p/6523215.html 我们在使用Spring框架的时候首先要配置其xml文件,大量的头信息到底代表了什么呢,在这里总结下自己 ...