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

太原市科鑫网络科技有限公司 2026/09/09 19:09:13
  • 栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈)
  • 允许进行操作的一端称为”栈顶“
  • 另一固定端称为”栈底“
  • 当栈中没有元素时称为”空栈“
  • 特点:后进先出(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;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

东阳网站建设江津网站建设

ShawzinBot终极指南:如何在Warframe中实现专业级MIDI音乐自动化【免费下载链接】ShawzinBotConvert a MIDI input to a series o

2026/06/30 14:06:08

广州市网站建设网站建设知识

一次上电即成功:深度拆解硬件电路中的软启动设计你有没有遇到过这样的场景?系统明明设计得很完善,元器件选型也没问题,可每次上电瞬间,

2026/06/30 12:50:03

合肥网站建设荆门网站建设

Linly-Talker 能否识别情感文本并调整语调?一场关于情感 TTS 的深度验证在虚拟主播能带货、AI 客服会共情的今天,我们对“数字人”的期待早已不再是那个只会机械

2026/06/30 12:35:32

青海网站建设番禺网站建设

SocialFish是一个基于Flask框架开发的专业级网络安全教育和授权测试平台,专为网络安全教育和授权渗透测试设计。本文将从架构设计原理、核心模块实现机制到高级部署实践,

2026/06/30 14:00:38

诸城网站建设扬中网站建设

网站分析:解锁成功的关键指标与策略在当今数字化的时代,网站已成为企业和组织展示自身、吸引客户的重要平台。然而,仅仅拥有一个网站远远不够,了解如何分析网站数据,衡量网站的成功与否,对于实现业务目标至关重

2026/06/30 13:05:35

网站建设哪家公司好甘肃网站建设

为什么越来越多开发者选择PaddlePaddle做计算机视觉?在智能制造工厂的质检线上,一台边缘设备正以每秒30帧的速度识别电路板上的微小缺陷;城市的交通监控

2026/06/30 13:44:07

网站建设策划书甘肃网站建设

Mathtype公式转换出错?我们的文本输入兼容性强在科研写作、教学课件制作或学术报告准备中,越来越多用户希望将包含复杂数学公式的文档转为语音进行校对或分享。但现实往往令人

2026/06/30 13:28:06

长春网站建设网站建设知识

如何让条码扫描器“听话”?嵌入式系统中scanner通信协议的实战解析你有没有遇到过这样的场景:一个工业扫码枪接上MCU后,时而正常出码,时而乱

2026/06/30 10:53:22

房地产网站建设旅游网站建设

Grammarly Premium Cookie自动搜索工具完整使用指南【免费下载链接】autosearch-grammarly-premium-cookie项目地址: https://gitcode

2026/06/30 13:42:07

网站建设书静安网站建设

树莓派Pico实战:从零开始掌握PWM信号输出控制你有没有试过用树莓派Pico让LED像呼吸一样明暗交替?或者想精准控制电机转速却苦于没有模拟输出?其实&#x

2026/06/30 14:02:38