C++学习(三十二)(C语言部分)之 栈
栈测试代码笔记如下:
#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语言部分)之 栈的更多相关文章
- ElasticSearch7.3学习(三十二)----logstash三大插件(input、filter、output)及其综合示例
1. Logstash输入插件 1.1 input介绍 logstash支持很多数据源,比如说file,http,jdbc,s3等等 图片上面只是一少部分.详情见网址:https://www.elas ...
- java jvm学习笔记十二(访问控制器的栈校验机制)
欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 本节源码:http://download.csdn.net/detail/yfqnihao/4863854 这一节,我们 ...
- Java开发学习(三十二)----Maven多环境配置切换与跳过测试的三种方式
一.多环境开发 我们平常都是在自己的开发环境进行开发, 当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用, 等测试人员测试通过后,我们会将项目部署到生成环境上线使用. 这个时候就有一 ...
- Salesforce LWC学习(三十二)实现上传 Excel解析其内容
本篇参考:salesforce lightning零基础学习(十七) 实现上传 Excel解析其内容 上一篇我们写了aura方式上传excel解析其内容.lwc作为salesforce的新宠儿,逐渐的 ...
- ballerina 学习 三十二 编写安全的程序
ballerina编译器已经集成了部分安全检测,在编译时可以帮助我们生成错误提示,同时ballerina 标准库 已经对于常见漏洞高发的地方做了很好的处理,当我们编写了有安全隐患的代码,编译器就已 ...
- python学习 (三十二) 异常处理
1 异常: def exceptionHandling(): try: a = b = d = a / b print(d) except ZeroDivisionError as ex: print ...
- Go语言学习笔记十二: 范围(Range)
Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...
- “全栈2019”Java多线程第三十二章:显式锁Lock等待唤醒机制详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
- “全栈2019”Java第三十二章:增强for循环Foreach语法
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
随机推荐
- 直接插入排序(Straight Insertion Sort)
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- 2.14 C++析构函数
参考: http://www.weixueyuan.net/view/6345.html 总结: 析构函数就是用于回收创建对象时所消耗的各种资源. 析构函数的调用顺序与构造函数调用顺序正好是相反的. ...
- DevExpress WPF v18.2新版亮点(六)
买 DevExpress Universal Subscription 免费赠 万元汉化资源包1套! 限量15套!先到先得,送完即止!立即抢购>> 行业领先的.NET界面控件2018年第 ...
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(一)
[MyEclipse最新版下载] 一.创建一个EJB项目 1. 选择File>New Project,选择EJB Project,然后单击Next. 2. 在Project name字段中输入f ...
- docker从初识到深入
1:使用docker有哪些优势: 更快交付你的应用(Faster delivery of your applications) 让部署和测试更简单(Deploying and scaling more ...
- C#窗体的浮动及隐藏
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- Beta阶段复审
名字 优点 缺点 排名 都行可以随它去 1.界面美观,比较的友好: 2.新增记账的邮箱提醒功能. 1.程序有什么具体的bug和或缺陷?(1)没有账单删除的功能:(2)预算没有什么必要.2.项目的目标实 ...
- python模块大全
python模块大全2018年01月25日 13:38:55 mcj1314bb 阅读数:3049 pymatgen multidict yarl regex gvar tifffile jupyte ...
- python-—计算器
python-练习—计算器 一.要求传入字符串,计算结果string='1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/ ...
- HDU 6092 17多校5 Rikka with Subset(dp+思维)
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...