栈的顺序存储结构实现
栈的数据元素之间的一一对应的关系可以利用顺序的存储来表示, 那么可以利用数组来实现栈数据结构.
存储结构伪代码
struct stack_record;
typedef struct stack_record * stack;
stack init_stack(int max_elements); // 初始化操作, 建立空栈
void dispose_stack(stack s); // 销毁栈
void clear_stack(stack s); // 清空栈
int is_empty(stack s); // 判断栈是否为空
int is_full(stack s); // 判断栈是否已满
element_type get_top(stack s); // 获取栈顶元素
void push(element_type element, stack s); // 入栈
void pop(stack s); // 出栈
struct stack_record {
int capacity; // 栈的最大容量
int top_of_stack; // 栈顶的下标
element_type *array; // 存储元素的数组
};
init_stack
函数 stack init_stack(int max_elements)
{
stack s = malloc(sizeof(struct stack_record));
if(s == NULL)
error("Out of space.");
s->array = malloc(sizeof(element_type) * max_elements);
if(s->array == NULL)
error("Out of space.");
s->capacity = max_elements;
s->top_of_stack = start;
return s;
}
dispose_stack
函数 void dispose_stack(stack s)
{
if(s != NULL) {
free(s->array);
free(s);
}
}
clear_stack
函数 void clear_stack(stack s)
{
s->top_of_stack = start; // start等于-1
}
is_empty
函数 bool is_empty(stack s)
{
return s->top_of_stack == start; // start等于-1
}
is_full
函数 bool is_full(stack s)
{
return s->top_of_stack == s->capacity;
}
get_top
函数 element_type get_top(stack s)
{
if(!is_empty(s)) {
return s->array[s->top_of_stack];
}
else {
error("Empty satck!");
return 0;
}
}
push
函数 void push(element_type element, stack s)
{
if(is_full(s)) {
error("Full stack!\n"};
}
else {
s->array[++(s->top_of_stack)] = element;
}
}
pop
函数 void pop(stack s)
{
if(id_empty(s)) {
error("Empty stack!\n");
}
else {
s->top_of_stack--;
}
}
计算机图形学的数学工具与C#实现.pdf国外科技新书评介 2010年第2期 (总第274期) 计算机科学YoshifumiM asunagaAoyamaGakuin 务的系统结构中是必不可少的,为了进行University,Japanetaleds. 性能分析,要求用工作流方式来表示,该Advancesin Scalabl...
ORACLE10g版本推出时,为了简化RAC中存储端的配置,ORACLE新推出了ASM(Automatic Storage Management --自动存储管理)特性,该特性拥有易管理,高自动性,并且,拥有号称超越裸设备IO性...
YAMLYAML是JSON的超集,简介而强大,是一种专门用来书写配置文件的语言,可以替代application.properties。在创建一个Spring Boot项目时,引入的spring-boot-starter-web依赖间接地引入了snakeyaml依赖,snakeyaml会实现对YAML配置的解析。YAML的使用非常简单,利用缩进来表示层级关系,并且大小写敏感。在Spring Bo...
目录模型结构Prior box默认框的产生Prior box 的大小尺寸计算输出层通道num_output计算。Priorbox的使用Permute,Flatten And Concat Layersmatching strategy:选择一系列default boxeshard negative miningdata augmentation技巧对比效果结...
前言受到疫情影响我从过完年一直呆在家里,索性学点知识方便以后跳槽涨薪,于是从二月份开始学习阿里P8架构师纯手打的一份Java面经手册,没想到5月初我成功从我们三线的一个小公司跳槽进了腾讯,虽然等级不高,但是涨薪还是涨了8K,而且去一个大公司多学点东西,对自己的成长还是有好处的。虽然说是面经手册,但是里面的涵盖的知识点还是很全面、很细的,一共分了一下十几个大部分:java基础、集合类Set、锁volatile synchronized Lock ReentrantLock AQS C、java多线程:、J
MATLAB:在奈奎斯特图上显示幅值裕度和相角裕度
说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子:#include struct student{int a;int b ;int c ;};struct student array1[1000] ;int main(void){int i ;for(i = 0 ; i < 1000 ; i++){array[i].a = 1 ;array[i].b = ...
IPV4地址划分有三种:⑴ 由网络位+主机位组成。分为:A、B、C、D、E类,其中A、B、C是常用的,这个在很多书上都可以看到。①A类地址:网络号占8位(第一位为0),主机号占24位。网络号的范围:1~126(0000 0001~0111 1111)(注:为什么不到127? 因为127为网络保留,有其他作用;为什么没有0?网络号全为0为保留地址)最大可用网络数:126=2^
最近做项目需要将通过API的到的数据存到本地,并且确保本地数据库中某张表的数据与数据源的数据保持一定的同步性,以下为解决问题的思路:1.在本地做好映射确保可以从外部访问,让api的提供方在数据库提供一个触发器,当数据提供方的数据发生变化时,主动同步到本地。(对方拒绝,扑街)2.用Mysql的repalce into 语句进行结合定时器来对数据的定时更新。3.网上还有一种思路是,从本地数据库调用此表中不变的字段...
1.先在终端输入sudo raspi-config2.找到Interfacing 进入3.开启vnc 重启树莓派4.打开windows下的 vnc viewer5.右上角点击File 创建新连接6.输入账号密码进行连接
互联网业务用户层技术主要包括:用户管理、消息推送、存储云、图片云。用户管理互联网业务的一个典型特征就是通过互联网将众多分散的用户连接起来,因此用户管理是互联网业务必不可少的一部分。稍微大一点的互联网业务,肯定会涉及到多个子系统,这些子系统不可能每个都自己来管理这么庞大的用户,由此引申出用户管理的第一个目标:SSO,单点登录,又叫统一登录。单点登录的技术实现手段较多,例如cookie、token等,
在此声明——本文摘自这里:【码神岛】STM32F0x HAL库学习笔记(5)片内FLASH的读写操作本文开发环境MCU型号:STM32F103C8T6IDE环境: MDK 5.25代码生成工具:STM32CubeMx 5.0.1HAL库版本:v1.9.0本文内容MCU片内Flash(闪存)的擦除与读写一个Flash读写例子/*main.c中的代码*/void FLASH_EEPROM_Write(uint32_t n);uint32_t FLASH_EEPROM_Read(