栈测试代码笔记如下:

 #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. jquery插件artTxtCount输入字数限制,并提示剩余字数

    工作中用到,需要批量处理下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...

  2. asp.netmvc 三层搭建一个完整的项目

    接下来用 asp.net mvc 三层搭建一个完整的项目: 架构图: 使用的数据库: 一张公司的员工信息表,测试数据 解决方案项目设计: 1.新建一个空白解决方案名称为Company 2.在该解决方案 ...

  3. vue-2-计算属性和观察者

    <div id="example"> <p>Original message: "{{ message }}"</p> &l ...

  4. Android : 修改内核源码 and 编译、打包成新的boot.img

    一.Android内核源码的下载: 1.Google GIT地址: $ git clone https://android.googlesource.com/kernel/common.git $ g ...

  5. 用Java给数组排序

    public class BubbleDemo {public static void main(String[] args) { int arr[]={1,3,5,7,2,4,6,8,9}; bub ...

  6. SharePoint REST API - 基本操作(二)

    博客地址:http://blog.csdn.net/FoxDave 上一节讲了SharePoint REST API的一些基本操作,本节将继续介绍一些关于SharePoint REST API的内容. ...

  7. AndroidSDK 自带定位工具 uiautomatorviewer

    前言:uiautomatorviewer是androidSDK自带的定位工具 1.打开目录D:\Android\androidSDK\tools\bin 2.点击启动uiautomator,页面显示如 ...

  8. Linux:NFS配置

    NFS配置 1.创建分享的文件:touch /var/www/html/aa.txt2.查看是否安装NFS:rpm -qa|grep nfs3.查看IP地址:ifconfig4.配置NFS:vi /e ...

  9. 4-log4j2之切分日志文件

    一.添加maven依赖 <dependencies> <dependency> <groupId>org.apache.logging.log4j</grou ...

  10. python 爬虫newspaper3k 新闻爬去方法 利用第三方库

    from newspaper import Article url = '你想要爬取的网站url' news = Article(url, language='zh') news .download( ...