北京网站建设东莞网站建设公司

郑州顺裕和商贸有限公司 2026/09/09 20:35:48
  • 栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈)
  • 允许进行操作的一端称为”栈顶“
  • 另一固定端称为”栈底“
  • 当栈中没有元素时称为”空栈“
  • 特点:后进先出(LIFO)或先进后出

  • 顺序栈是顺序表的一种,具有顺序表同样的存储结构,由数组定义,配合用数组下标表示的栈顶指针top(相对指针)完成各种操作
typedefintdata_t;/*定义栈中数据元素的数据类型*/typedefstruct{data_t*data;/*用指针指向栈的存储空间*/intmaxlen;/*当前栈的最大元素个数*/inttop;/*指示栈顶位置(数组下标)的变量*/}sqstack;/*顺序栈类型定义*/

顺序栈

功能代码

#include<stdio.h>#include<stdlib.h>#include<string.h>#include"sqstack.h"sqstack*stack_create(intlen){sqstack*s;if((s=(sqstack*)malloc(sizeof(sqstack)))==NULL){printf("malloc sqstack failed
");returnNULL;}if((s->data=(data_t*)malloc(len*sizeof(data_t)))==NULL){printf("malloc data failed
");free(s);returnNULL;}memset(s->data,0,len*sizeof(data_t));s->maxlen=len;s->top=-1;returns;}intstack_push(sqstack*s,data_tvalue){if(s==NULL){printf("s is NULL
");return-1;}if(s->top==s->maxlen-1){printf("stack is full
");return-1;}s->top++;s->data[s->top]=value;return0;}intstack_empty(sqstack*s){if(s==NULL){printf("s is NULL
");return-1;}return(s->top==-1?1:0);}intstack_full(sqstack*s){if(s==NULL){printf("s is NULL
");return-1;}return(s->top==s->maxlen-1?1:0);}data_tstack_pop(sqstack*s){s->top--;return(s->data[s->top+1]);}data_tstack_top(sqstack*s){return(s->data[s->top]);}intstack_clear(sqstack*s){if(s==NULL){printf("s is NULL
");return-1;}s->top=-1;return0;}intstack_free(sqstack*s){if(s==NULL){printf("s is NULL
");return-1;}if(s->data!=NULL){free(s->data);}free(s);return0;}

头文件

typedefintdata_t;typedefstruct{data_t*data;intmaxlen;inttop;}sqstack;sqstack*stack_create(intlen);intstack_push(sqstack*s,data_tvalue);intstack_empty(sqstack*s);intstack_full(sqstack*s);data_tstack_pop(sqstack*s);data_tstack_top(sqstack*s);intstack_clear(sqstack*s);intstack_free(sqstack*s);

测试文件

#include<stdio.h>#include"sqstack.h"intmain(intargc,constchar*argv[]){sqstack*s;s=stack_create(100);if(s==NULL)return-1;stack_push(s,10);stack_push(s,20);stack_push(s,30);stack_push(s,40);while(!stack_empty(s)){printf("pop: %d 
",stack_pop(s));}stack_free(s);return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

六安网站建设泉州网站建设

摘要迈克尔逊干涉仪是光学干涉测量的典型装置。 装置中的不同配置可能导致不同的干涉条纹,因此,它们之间的关系非常值得去深入研究。借助VirtualLab Fusion中的非序

2026/06/30 13:57:08

十堰网站建设网站建设方案模板

LangFlow实现文档自动摘要的工作流设计在企业知识管理日益复杂的今天,面对海量的技术文档、会议纪要和研究报告,如何快速提取核心信息已成为一个普遍痛点。传统做法依赖人工阅

2026/06/30 10:15:49

南宁网站建设网站建设费用

文章目录基于微信小程序的健康管理系统(Vue+Uniapp)主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货

2026/06/30 10:38:21

广州网站建设黑龙江网站建设

随着分布式架构与云原生技术的普及,传统负载测试已无法满足复杂系统的高可用诉求。根据Gartner 2025年报告,采用多维性能测试的企业系统故障率降低67%。本文构建的PE

2026/06/30 11:31:26

电子商务网站建设网站建设一条龙

刚开始做外汇程序化交易时,我经常问自己一个看似简单的问题:外汇市场没有统一交易所,那所谓的“外汇 API”到底从哪里来的?很多教程会直接告诉你&

2026/06/30 13:54:08

门户网站建设东莞手机网站建设

百度网盘Mac加速插件终极使用指南:免费解锁SVIP高速下载【免费下载链接】BaiduNetdiskPlugin-macOSFor macOS.百度网盘 破解SVIP、下载速度限制~项目

2026/06/30 10:37:52

东阳网站建设咸宁网站建设

32位打印驱动宿主的稳定性突围:从WDM到UMDF的实战进阶在今天的企业IT环境中,你是否曾遇到过这样的场景?一台运行着老旧财务系统的Windows 10 x

2026/06/30 13:33:36

建设部网站永康网站建设

STM32 OTG设备模式实战指南:从原理到代码的完整实现你有没有遇到过这样的场景?一块STM32开发板插上电脑,系统提示“无法识别的USB设备”——明明代码

2026/06/30 12:46:33

东阳网站建设网站的建设

从零构建智能家居:ESP32与MQTT的实战交响曲你有没有过这样的经历?晚上回家前想提前打开空调,却发现App卡在“正在连接”;或者半夜起床&#

2026/06/30 12:53:04