广州网站建设行业网站建设

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

网站建设一条龙随州网站建设

Fisher插件管理器的终极指南:让Fish Shell插件管理变得简单高效【免费下载链接】fisherA plugin manager for Fish项目地址: https://gi

2026/06/30 10:43:51

网站建设与维护成都企业网站建设

第一章:农业传感器Agent的低功耗设计挑战在现代农业物联网系统中,部署于田间的传感器Agent承担着环境监测、数据采集与初步处理的关键任务。这些设备通常依赖电池或能量采集

2026/06/30 10:55:52

长安网站建设连云港网站建设

Stripe支付集成:让用户便捷购买DDColor使用额度在家庭相册里泛黄的老照片前驻足,是许多人共有的情感体验。那些模糊的轮廓、褪色的面容,承载着几代人的记

2026/06/30 12:25:31

网站建设内容网站建设代码

想要在Java生态中轻松接入区块链技术吗?Web3j作为轻量级Java库,让你无需深入底层协议即可构建强大的去中心化应用。本文将带你从零开始,快速完成Web3

2026/06/30 14:18:09

郑州网站建设湘潭网站建设

Proxmark3实战应用全解析:从入门到精通的RFID安全测试指南【免费下载链接】proxmark3Proxmark 3项目地址: https://gitcode.com/gh_mir

2026/06/30 11:33:56

福田网站建设南京网站建设公司

Emby弹幕插件终极指南:快速实现免费弹幕功能【免费下载链接】dd-danmakuEmby danmaku extension项目地址: https://gitcode.com/gh_m

2026/06/30 12:58:03

赣州网站建设梧州网站建设

Hermes-4 14B:60B tokens打造的混合推理神器【免费下载链接】Hermes-4-14B项目地址: https://ai.gitcode.com/hf_mirrors/N

2026/06/30 13:54:08

唐山网站建设招商网站建设

Windows Server 2003 组策略规划、实施与管理全解析1. 组策略概述系统管理员面临的一大挑战是对用户、组和客户端计算机的管理。用户随意更改系统配置,会给管理带来极大困扰。例如,用户自行

2026/06/30 12:48:03

网站建设合同承德网站建设

FPGA驱动LCD:从引脚分配到信号完整的实战精要你有没有遇到过这样的场景?FPGA代码写得严丝合缝,时序仿真波形完美无瑕,结果一接上LCD屏—

2026/06/30 13:34:06

网站建设总结网站建设管理

Docker 容器镜像构建与存储分发指南1. Dockerfile 复杂性与环境变量的使用Dockerfile 可能会变得相当复杂,使用环境变量(ENVs)有助于维护。例如,当 Consul 发布新版

2026/06/30 14:01:38