链栈的练习

链栈练习

相关内容:栈的链式存储结构(链栈)

//链栈的初始化、判空、入栈、出栈、读取栈顶元素
//链栈的结点:数据域、指针域
#include<stdio.h>
#include<stdlib.h>
typedef int Status;
#define OK 1
#define ERROR 0
typedef struct LNode
{
    int data;
    struct LNode *next;
}LinkNode,*LinkStack;
//链栈的初始化
Status InitLinkStack(LinkStack *LS){
    (*LS)==NULL;//栈顶指针置空
    return OK;
}
//链栈的判空
Status isEmpty(LinkStack *LS){
    if ((*LS)==NULL)
    {
        return ERROR;
    }else
        return OK;
}
//链栈的入栈,由于出入栈只能在表头操作
//使用栈顶指针需要改变,使用指针的指针保存栈顶指针,方便修改其指向
Status Push(LinkStack *LS,int e){
    //无需判满,只有内存不满都可申请空间
    LinkNode *p;//新结点p
    p=(LinkNode*)malloc(sizeof(LinkNode));
    p->data=e;//元素赋值给结点数据域
    p->next=(*LS);//新结点指向表头
    (*LS)=p;//栈顶指针指向新结点使其成为新表的表头
    return OK;
}
//链栈的出栈,由于出入栈只能在表头操作
//使用栈顶指针需要改变,使用指针的指针保存栈顶指针,方便修改其指向
Status Pop(LinkStack *LS,int *e){
    if ((*LS)==NULL)//判空
        return ERROR;
    *e=(*LS)->data;//把表头结点数据取走
    LinkNode *p;
    p=(*LS);//p指向表头结点,一会删除
    (*LS)=(*LS)->next;//后移栈顶指针,指向新表头结点
    free(p);//删除当前表头结点p
    return OK;
}
//链栈的读取栈顶元素
int GetElem(LinkStack *LS){
    if ((*LS)!=NULL)
        return (*LS)->data;
    else
        return 0;
}
int main(){
    int n,e;
    LinkStack LS;
    InitLinkStack(&LS);
    printf("初始化完成!\n");
    if (!isEmpty(&LS))
        printf("栈非空!\n");
    printf("输入需要入栈的元素个数:");
    scanf("%d",&n);
    for (size_t i = 0; i < n; i++)
    {
        printf("输入第%d个入栈元素:",i+1);
        scanf("%d",&e);
        Push(&LS,e);
    }
    printf("栈顶元素为:%d\n",GetElem(&LS));
    printf("所有元素出栈\n");
    for (size_t i = 0; i < n; i++)
    {
        printf("输出第%d个出栈元素:",i+1);
        Pop(&LS,&e);
        printf("%d\n",e);
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/115993.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法通关村第五关-白银挑战队列经典问题

大家好我是苏麟 , 今天带来几道经典小题 . 大纲 两数之和 两数之和 相信大家对这道题还是很眼熟的 , 打开LeetCode第一道题就是它 , 对它可真的又爱又恨 , 很多新手朋友们想刷LeetCode但又不知道从哪开始就打开了第一题 , 结果就对算法失去了信心 . 这道题找对方法还是很容易…

2022最新版-李宏毅机器学习深度学习课程-P32 Transformer

一、 seq2seq 1. 含义 输入一个序列&#xff0c;机器输出另一个序列&#xff0c;输出序列长度由机器决定。 文本翻译&#xff1a;文本至文本&#xff1b;  语音识别&#xff1a;语音至文本&#xff1b;  语音合成&#xff1a;文本至语音&#xff1b;  聊天机器人&#…

R语言_RColorBrewer包--全平台可用

R语言_RColorBrewer包–全平台可用

微服务架构——笔记(2)

微服务架构——笔记&#xff08;2&#xff09; 一、客户客户端模块 文章来源B站视频 尚硅谷SpringCloud框架开发教程(SpringCloudAlibaba微服务分布式架构丨Spring Cloud)教程 本次笔记内容为消费者订单Module模块 1.1 项目名称、目录结构 1.2 Pom.xml <?xml version&q…

【kafka】记一次kafka基于linux的原生命令的使用

环境是linux&#xff0c;4台机器&#xff0c;版本3.6&#xff0c;kafka安装在node 1 2 3 上&#xff0c;zookeeper安装在node2 3 4上。 安装好kafka&#xff0c;进入bin目录&#xff0c;可以看到有很多sh文件&#xff0c;是我们执行命令的基础。 启动kafka&#xff0c;下面的…

【使用Python编写游戏辅助工具】第三篇:鼠标连击器的实现

前言 这里是【使用Python编写游戏辅助工具】的第三篇&#xff1a;鼠标连击器的实现。本文主要介绍使用Python来实现鼠标连击功能。 鼠标连击是指在很短的时间内多次点击鼠标按钮&#xff0c;通常是鼠标左键。当触发鼠标连击时&#xff0c;鼠标按钮会迅速按下和释放多次&#xf…

自学黑客,一般人我劝你还是算了吧!

写在开篇 笔者本人 17 年就读于一所普通的本科学校&#xff0c;20 年 6 月在三年经验的时候顺利通过校招实习面试进入大厂&#xff0c;现就职于某大厂安全联合实验室。 我为啥说自学黑客&#xff0c;一般人我还是劝你算了吧&#xff01;因为我就是那个不一般的人。 首先我谈下…

Jenkins安装(Jenkins 2.429)及安装失败解决(Jenkins 2.222.4)

敏捷开发与持续集成 敏捷开发 敏捷开发以用户的需求进化为核心&#xff0c;采用迭代、循序渐进的方法进行软件开发。在敏捷开发中&#xff0c;软件项目在构建初期被切分成多个子项目&#xff0c;各个子项目的成果都经过测试&#xff0c;具备可视、可集成和可运行使用的特征。…

【Solidity】Remix在线环境及钱包申请

好久没有学习区块链方面的知识了&#xff0c;目前通过自学大致掌握了Fabric联盟链的搭建&#xff0c;链码编写、部署&#xff0c;api调用&#xff0c;可以独立开发出一些基于fabric的应用&#xff0c;感觉开发出去中心化的应用还是很有意思的&#xff0c;因为他与之前开发的ssm…

el-table表格设置——动态修改表头

(1) 首先是form表单写表单设置按钮&#xff1a; &#xff08;1.1&#xff09;使用el-popover&#xff0c;你需要修改的是this.colOptions&#xff0c;colSelect: <el-popover id"popover" popper-class"planProver" placement"bottom" width&…

USB PD v1.0快速充电通信原理

1 原理 本篇文章讲的快速充电是指USB论坛所发布的USB Power Delivery快速充电规范&#xff08;通过VBUS直流电平上耦合FSK信号来请求充电器调整输出电压和电流的过程&#xff09;&#xff0c;不同于本人发布的另一篇文章所讲的高通Quick Charger 2.0规范&#xff0c;因为高通QC…

【sql注入】sql关卡1~4

前言&#xff1a; 靶场自取 level-1 测试注入点 POC: 1,1,1,1"",1/1,1/0 》存在注入点 爆破 POC: id-1andextractvalue(1,concat(0x7e,user(),0x7e))-- level-2 尝试注入点 POC1:admin POC2:admin POC3:adminandsleep(3)-- POC4: adminandif(1,1,0)0-- POC…

Adobe acrobat 11.0版本 pdf阅读器修改背景颜色方法

打开菜单栏&#xff0c;编辑&#xff0c;首选项&#xff0c;选择辅助工具项&#xff0c;页面中 勾选 替换文档颜色&#xff0c;页面背景自己选择一个颜色&#xff0c;然后确定&#xff0c;即可&#xff01;

产品手册应该如何组织内容,以便用户能够快速找到所需信息?

产品手册应该如何组织内容&#xff0c;以便用户能够快速找到所需信息&#xff1f;这是一个关乎用户体验和产品文档效力的重要问题。当用户需要了解产品的功能、操作指南或故障排除时&#xff0c;他们希望能够轻松地找到准确、清晰的信息&#xff0c;而不是在冗长的手册中迷失方…

Leetcode—421.数组中两个数的最大异或值【中等】明天写一下字典树做法!!!

2023每日刷题&#xff08;十九&#xff09; Leetcode—421.数组中两个数的最大异或值 算法思想 参考自灵茶山艾府 实现代码 class Solution { public:int findMaximumXOR(vector<int>& nums) {int maxValue *max_element(nums.begin(), nums.end());int highId…

Java CAS是什么,它的底层原理?

文章目录 前言一、CAS是什么二、CAS底层原理1、UnSafe类&#xff08;Native方法&#xff09;2、CAS思想&#xff08;自旋锁&#xff09;3、为什么使用CAS&#xff0c;不用synchronized&#xff1f;4、CAS缺点5、ABA问题&#xff0c;原子引用更新&#xff1f; 前言 对于CAS部分…

『精』Vue 组件如何模块化抽离Props

『精』Vue 组件如何模块化抽离Props 文章目录 『精』Vue 组件如何模块化抽离Props一、为什么要抽离Props二、选项式API方式抽离三、组合式API方式抽离3.1 TypeScript类型方式3.2 文件分离方式3.3 对文件分离方式优化 参考资料&#x1f498;推荐博文&#x1f357; 一、为什么要抽…

系列六、Mybatis的一级缓存

一、概述 Mybatis一级缓存的作用域是同一个SqlSession&#xff0c;在同一个SqlSession中执行两次相同的查询&#xff0c;第一次执行完毕后&#xff0c;Mybatis会将查询到的数据缓存起来&#xff08;缓存到内存中&#xff09;&#xff0c; 第二次执行相同的查询时&#xff0c;会…

day02_第一个Java程序

在开发第一个Java程序之前&#xff0c;我们必须对计算机的一些基础知识进行了解。 常用DOS命令 Java语言的初学者&#xff0c;学习一些DOS命令&#xff0c;会非常有帮助。DOS是一个早期的操作系统&#xff0c;现在已经被Windows系统取代&#xff0c;对于我们开发人员&#xf…

前端面试题之HTML篇

1、src 和 href 的区别 具有src的标签有&#xff1a;script、img、iframe 具有href的标签有&#xff1a;link、a 区别 src 是source的缩写。表示源的意思&#xff0c;指向资源的地址并下载应用到文档中。会阻塞文档的渲染&#xff0c;也就是为什么js脚本放在底部而不是头部的…