#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "time.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20 /* 存储空间初始分配量 */
typedef int Status;
typedef int SElemType; /* SElemType 类型根据实际情况而定,这里假设为 int */
/* 顺序栈结构 */
typedef struct {
SElemType data[MAXSIZE];/* 存放数据的数组 */
int top; /* 用整数来做栈顶指针 */
} SqStack;
/* 访问一个元素 */
Status visit(SElemType c) {
printf("%d ", c);
return OK;
}
/* 构造一个空栈 S */
Status InitStack(SqStack *S) {
/* S.data=(SElemType *)malloc(MAXSIZE*sizeof(SElemType)); */
S->top = -1;
return OK;
}
/* 把 S 置为空栈 */
Status ClearStack(SqStack *S) {
S->top = -1;
return OK;
}
/* 若栈 S 为空栈,则返回 TRUE,否则返回 FALSE */
Status StackEmpty(SqStack S) {
if (S.top == -1)
return TRUE;
else
return FALSE;
}
/* 返回 S 的元素个数,即栈的长度 */
int StackLength(SqStack S) {
return S.top + 1;
}
/* 若栈不空,则用 e 返回 S 的栈顶元素,并返回 OK;否则返回 ERROR */
Status GetTop(SqStack S, SElemType *e) {
if (S.top == -1)
return ERROR;
else
*e = S.data[S.top];
return OK;
}
/* 插入元素 e 为新的栈顶元素 */
Status Push(SqStack *S, SElemType e) {
if (S->top == MAXSIZE - 1) /* 栈满 */
{
return ERROR;
}
S->top++;
/* 栈顶指针增加一 */
S->data[S->top] = e; /* 将新插入元素赋值给栈顶空间 */
return OK;
}
/* 若栈不空,则删除 S 的栈顶元素,用 e 返回其值,并返回 OK;否则返回 ERROR */
Status Pop(SqStack *S, SElemType *e) {
if (S->top == -1)
return ERROR;
*e = S->data[S->top];
S->top--;
return OK;
/* 将要删除的栈顶元素赋值给 e */
/* 栈顶指针减一 */
}
/* 从栈底到栈顶依次对栈中每个元素显示 */
Status StackTraverse(SqStack S) {
int i;
i = 0;
while (i <= S.top) {
visit(S.data[i++]);
}
printf("\n");
return OK;
}
int main() {
int j;
SqStack s;
int e;
if (InitStack(&s) == OK)
for (j = 1; j <= 10; j++)
Push(&s, j);
printf("栈中元素依次为:");
StackTraverse(s);
Pop(&s, &e);
printf("弹出的栈顶元素 e=%d\n", e);
printf("栈空否:%d(1:空 0:否)\n", StackEmpty(s));
GetTop(s, &e);
printf("栈顶元素 e=%d 栈的长度为%d\n", e, StackLength(s));
ClearStack(&s);
printf("清空栈后,栈空否:%d(1:空 0:否)\n", StackEmpty(s));
return 0;
}
相关推荐
不到200块!手把手教你用ZYNQ7010和AD9363攒一台自己的开源SDR硬件(附BOM清单)
本文详细介绍了如何用不到200元的预算,基于ZYNQ7010 FPGA和AD9363射频芯片打造一台功能完备的开源SDR硬件平台。从核心组件选型、PCB设计到焊接调试,提供全流程实战指南,特别适合预算有限的硬件爱好者和创客群体探索无线通信世界。
大话数据结构
时间复杂度从小到大排序:0(1) < O(logn) < O(n) < O(nlogn) < O(n2 ) < O(n3 ) < 0(2n ) < O(nl) < O(nn )线性表特点要求:有且只有一个前驱点,一个后驱点。一一对应的关系。顺序存储:用一段连续的内存地址存储数据。如vector,优点是访问元素快O(1),插入删除慢O(N).链式存储:如list(其实是环型双向链表).优点是插入删除快O(1),访问元素慢O(N).........................................
IEEE Access 上岸指南,附含泪整理的 cover letter 、沟通邮件、终版文档等资料包
终于上岸了! 我是一个小硕,本科期间发表过两篇水文,奈何学校有更高的毕业要求,只能硬着头皮尝试一下 SCI。 想投 IEEE Access 的朋友都应该知道 小木虫论坛 对这个期刊的讨论,褒贬不一,有的人说是大水刊,有的人说有难度。 比如: @wow_: 不可否认,灌水期刊。只要之前中过一篇,再投基本没有不录用的!我们实验室其他老师说过一区除外的收费期刊都应该禁止灌水。 @pssp: 审稿人还...
循环队列表示与实现
Code//循环队列的表示与实现#include<stdio.h>#include<malloc.h>#include<stdlib.h>#defineOK1#defineERROR0#defineTRUE1#defineFALSE0#defineOVERFLOW-2#defineMAXSIZE100structSqQueue{...
56-FMC连接器电路设计
FMC连接器电路设计
STM32F407 CanOpen主机实战:对象字典配置与多电机CIA402协议驱动详解
本文详细介绍了基于STM32F407的CanOpen主机开发实战,重点解析了对象字典的配置流程与多电机CIA402协议驱动方法。通过使用objdictedit工具配置SDO和PDO参数,并整合CanFestival协议栈,实现了对多个伺服电机的稳定同步控制。文章提供了从硬件连接到代码调试的完整指南,帮助开发者快速掌握工业现场的多轴运动控制技术。
01顺序栈_Stack
#include<stdio.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 /* 存储空间初始分配量 */ typedef int Status; typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为int */ /* 顺序栈结构 */ typedef struct { SElemType data[MAXSIZE
华为使用MicroG安装并使用Google服务教程
鉴于众多华为手机用户因无法使用Google服务而感到不便,我经过多次摸索和测试,总结了一份简单易懂的教程,希望能够帮助到大家。无论是需要使用Google Play商店下载应用,还是需要使用Google服务进行工作和学习,本文将详细介绍如何在华为手机上安装并使用Google服务。二、前置条件软件要求:Aurora Store(替代Google Play商店)、MicroG Companion、MicroG Server(替代Google框架)
数据结构之栈(顺序栈和链栈)(c语言附完整代码)
① 栈是一种特殊的线性表,它只允许在固定的一端进行插入和删除元素的操作。② 进行数据插入的删除和操作的一端,称为栈顶,另一端则称为栈底。③ 栈中的元素遵守后进先出的原则,即 LIFO原则(Last In First Out)栈也称为后进先出表。④栈的插入操作通常称为进栈或者入栈,栈的删除操作通常称为出栈或退栈。示意图:栈的顺序存储结构称为顺序栈声明顺序栈int top;//栈指针 } SqStack;栈的链式存储结构称为链栈声明链栈。
uniapp [微信小程序] - 详解微信小程序端接入mqtt全流程及示例源码教程,uniApp微信小程序端如何接入MQTT插件并实现连接/断开+发布订阅+消息队列+离线重连等各种示例代码(开箱即用)
uniapp微信小程序接入MQTT,uniapp中使用mqtt,uniapp 微信小程序端接入mqtt示例代码教程,适用于微信小程序的MQTT插件,uniapp开发微信小程序连接mqtt,uniApp微信小程序接入MQTT协议,uniapp vue3微信小程序使用MQTT的小例子接入流程,使用uniapp开发小程序接入mqtt,如何在uniapp项目中使用mqtt,uniapp mqtt的使用示例,mqtt连接报错,如何在项目里集成mqtt,Mqtt协议,主动连接mqtt,订阅消息,实现发布,订阅和接收消息
DRM遇到的实际问题及领悟(3)
DRM遇到的实际问题及领悟(3)
顺序栈的实现代码_栈的顺序存储结构及实现 | 大话数据结构
栈的应用有许多,这一篇着重讲栈的顺序存储结构及实现。01栈的顺序存储结构既然栈是线性表的特例,那么栈的顺序存储其实也是线性表顺序存储的简化,我们简称为顺序栈。线性表是用数组来实现的,想想看,对于栈这种只能一头插入删除的线性表来说,用数组哪一端来作为栈顶和栈底比较好?对,没错,下标为0的一端作为栈底比较好,因为首元素都存在栈底,变化最小,所以让它作栈底。我们定义一个top变量来指示栈顶元素...
材料带隙预测(图神经网络)(⭐⭐)—— 用晶体图网络预测钙钛矿材料的能带隙,加速光伏材料筛选。技术栈:CGCNN、MEGNet、Materials Project数据集
钙钛矿太阳能电池以其高效率、低成本的优势迅速崛起,但传统“试错法”材料筛选效率极低,严重制约了光伏技术的迭代速度。近年来,基于图神经网络的材料带隙预测方法,特别是晶体图神经网络(CGCNN)和材料图网络(MEGNet),为这一问题提供了革命性的解决方案。本文系统梳理了材料带隙预测从传统计算到深度学习的演进历程,深入剖析了CGCNN与MEGNet的架构设计、数学原理及创新机制,详细阐述了Materials Project数据集的构建、特征工程与处理策略。
程杰《大话数据结构》4-1 顺序栈(C语言源码+运行结果)
#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h" #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 /* 存储空间初始分配量 */ ...
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
2024年大数据最全大话数据结构--栈与队列,2024年最新一年后斩获腾讯T3
s->data=e;因为3先出栈,就意味着,3曾经进栈,既然3都进栈了,那也就意味着,1和2已经进栈了,此时,2一定是在1的上面,就是更接近栈顶,那么出栈只可能是321,不然不满足123依次进栈的要求,所以此时不会发生1比2先出栈的情况。做法如图,数组有两个端点,两个栈有两个栈底,让一个栈的栈底为数组的始端,即下标为0处,另一个栈为栈的末端,即下标为数组长度n-1处。栈对线性表的插入和删除的位置进行了限制,并没有对元素进出的时间进行限制,也就是说,在不是所有元素都进栈的情况下,事先进去的元素也可以出栈,
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
数据结构概述
专栏原创出处:github-源笔记文件 ,github-源码 ,欢迎 Star,转载请附上原文出处链接和本声明。 文章目录1.数据结构2.逻辑结构2.1 逻辑结构的分类2.2 常见的数据逻辑结构层次关系图3.存储结构4.逻辑结构和存储结构的区别参考 1.数据结构 相互之间存在一种或多种特定关系的数据元素的集合称为「数据结构」。按照视点的不同,数据结构可以分为「逻辑结构」和「存储结构」。 2....
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
大话数据结构之三(栈和队列)
栈的定义 栈是仅限有表尾进行插入和删除操作的线性表 允许插入和删除操作的一端称为栈顶,别一端称为栈底。不包含任何数据元素的栈称为空栈。栈又称为先进后出(Last In First Out)的线性表,简称为LIFO结构。 栈的插入操作叫做进栈,也称压栈、入栈。 栈的删除操作叫做出栈,也称弹栈 栈的抽象数据类型 栈的顺序存储结构 栈的插入和删除操作和时间复杂度均是O(...
栈的链式存储(含源码)
在学习栈的过程中,由于顺序栈的最大长度需要提前确定,失去了链表的灵活性,于是我开始思考能否将链表与栈有机结合,之后在《大话数据结构》一书中找到了答案,也就是栈的链式存储,下面对我在使用C语言实现链栈过程中的问题加以总结与反思。#include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #defin
求栈中元素个数算法_玩转数据 聊聊十大经典算法
算法的由来:9世纪波斯数学家提出的:“al-Khowarizmi”就是下图这位(感觉重要数学元素提出者貌似都戴了顶白帽子),开个玩笑,阿拉伯人对于数学史的贡献还是值得人敬佩的。本文作者:Damonare正文排序算法说明(1)排序的定义:对一序列对象根据某个关键字进行排序;输入:n个数:a1,a2,a3,...,an 输出:n个数的排列:a1',a2',a3',...,an',使得a1'...
排序_Sort
#include #include #include #include #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAX_LENGTH_INSERT_SORT 7 /* 用于
大话数据结构 -- 图
图的各种定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。 图与其他数据结构的不同之处见下表: 数据结构 结点之间关系 数据元素名称 数据元素可否没有 线性表 一对一 元素 可以(...
线性表的初始化
#include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 /* 存储空间初始分配量 */ typedef int ElemType;/* ElemType类型根据实际情况而定,这里假设为int */ typedef int Status; /* Status是函数的类
大话数据结构--顺序栈
// // main.cpp // 顺序栈 // // Created by Maggie on 18/8/21. // Copyright © 2018年 Maggie. All rights reserved. // #include <iostream> using namespace std; #define MAXSIZE 100 typedef int SE...
479



被折叠的 条评论
为什么被折叠?



