Programming Abstractions in C阅读笔记:p331-p337

《Programming Abstractions in C》学习第79天,p331-p337,总计7页。

一、技术总结

/** File: stack.h* -------------* This interface defines an abstraction for stacks. In any* single application that uses this interface, the values in* the stack are constrained to a single type, although it* is easy to change that type by changing the definition of* stackElementT in this interface.*/#ifndef _stack_h
#define _stack_h#include "genlib.h"/** Type: stackElementT* -------------------* The type stackElementT is used in this interface to indicate* the type of values that can be stored in the stack. Here the* stack is used to store values of type double, but that can* be changed by editing this definition line.*/typedef double stackElementT;/** Type: stackADT* --------------* The type stackADT represents the abstract typed used to store* the elements that have been pushed. Because stackADT is* defined only as a pointer to a concrete structure that is not* itself defined in the interface, clients have no access to* the underlying fields.*/typedef struct stackCDT *stackADT;/** Function: NewStack* Usage: stack = NewStack();* --------------------------* This function allocates and returns a new stack, which is* initially empty.*/stackADT NewStack(void);/** Function: FreeStack* Usage: FreeStack(stack);* ------------------------* This function free the storage associated with the stack.*/void FreeStack(stackADT stack);/** Function: Push* Usage: Push(stack, element);* ----------------------------* This function pushes the specified element onto the stack;*/
void Push(stackADT stack, stackElementT element);/** Function: Pop* Usage: element = Pop(stack);* -----------------------------* This function pops the top element from the stack and returns* that value. The first value popped is always the last one* that was pushed. If the stack is empty when Pop is called,* the function calls Error with an appropriate message.*/stackElementT Pop(stackADT stack);/** Function: StackIsEmpty, StackIsFull* Usage: if (StackIsEmpty(stack)) ...*        if (StackIsFull(stack)) ...* ---------------------------------------* This function test whether the stack is empty or full.*/bool StackIsEmpty(stackADT stack);
bool StackIsFull(stackADT stack);/** Function: StackDepth* Usage: depth = StackDepth(stack);* ---------------------------------* This function returns the number of elements currently pushed* on the stack.*/
int StackDepth(stackADT stack);/** Function: GetStackElement* Usage: element = GetStackElement(stack, index);* -----------------------------------------------* This function returns the element at the specified index in* the stack, where the top of the stack is defined as index 0.* For example, calling GetStackElement(stack, 0) returns the top* element on the stack without removing it. If the caller tries* to select an out-of-range element, GetStackElement calls Error.* Note: This function is not a fundamental stack operation and* is instead provided principally to facilitate debugging.*/
stackElementT  GetStackElement(stackADT stack, int index);#endif

二、英语总结

1.polymorphism是什么意思?

答:

(1)polymorphous > polymorph > polymorphism

(2)polymorphous: poly"many" + morphē “shape, form,”。adj. have various forms。

(3)polymorphism: capability of existing in different forms(多态性)。

p332, the ability to apply the same function to objects of different types called polymorhpism。

2.overhead用法总结

答:

(1)n. the regular and necessary costs(开销)。p332, In some cases, however, forcing the clients to use pointer as data values imposes an unacceptable level of overhead.

平时大多做副词用,也可以做名词。

3.compromise是什么意思?

答:com-(together) + promise,c/u. a joint promise to abide by an arbiter’s decision(妥协)。 abide by sth: to accept or obey an aggrement。

4.as far as sth is concerned是什么意思?

答:If we are discussing or thinking about a particular thing(就…而言)。

5.relinquish是什么意思?

答:vt. to give up sth such as responsibility or claim(放弃,舍弃)。p335, Thus, in addition to the function NewStack, you need a symmetric funciton FreeStack, that takes a buffer and relinquishes any dynamically allocated storage it contains。

三、其它

并不是每一篇文章都是有意义的,这只是学习过程的一个记录。

四、参考资料

1. 编程

(1)Eric S.Roberts,《Programming Abstractions in C》:https://book.douban.com/subject/2003414

2. 英语

(1)Etymology Dictionary:https://www.etymonline.com

(2) Cambridage Dictionary:https://dictionary.cambridge.org

在这里插入图片描述

欢迎搜索及关注:编程人(a_codists)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS (T-ITS) 投稿记录,欢迎大家评论~

投稿整个流程时间点:Submitted: 17 October 2023 Awaiting Reviewer Assignment: From 18 October 2023 to 6 November 2023 Under review: From 6 November 2023 to 30 November 2023 Awaiting reviewer scores: From 1 December 2023 to 13 January 2024 Aw…

【课程】Java构架师42套阶段课程

01.第一阶段、Svn版本管理与代码上线架构方案 02.第二阶段、实战Java高并发程序设计模式视频 03.第三阶段、深入JVM内核一原理、诊断与优化 04.第四阶段、基于Netty的RPC架构实战演练 05.第五阶段、Git分布式版本控制系统权威指南 06.第六阶段、Redis从入门到精通、集群与应用 …

Unity学习笔记 6.2D换帧动画

下载源码 UnityPackage 目录 1.导入图片 1.1. 图片的叠放顺序 2.图片切片 3.用动画控制器让马🐎动起来 1.导入图片 直接拖拽进场景 检查 Texture Type(纹理类型)是否为 Sprite 创建2D精灵对象,拖拽图片到Sprite&#xff08…

【tips】Git使用指南

文章目录 一、Git介绍1. 什么是Git2.Git对比SVN3.Git安装 二.Git常用命令1. git config2. 初始化本地库3. 工作区、暂存区和版本库4. git add5. git commit6. git reset 与 git revertgit resetgit revert 三. Git 分支1.初识分支2.创建分支3.切换分支4.合并分支5.删除分支 四.…

6.4 Dropout正则化

1、Dropout Dropout是一种正则化技术,通过防止特征的协同适应,可用于减少神经网络中的过拟合。 Dropout的效果非常好,实现简单且不会降低网络速度,被广泛使用。 特征的协同适应指的是在训练模型时,共同训练的神经元…

【算法篇】逐步理解动态规划1(斐波那契数列模型)

目录 斐波那契数列模型 1. 第N个泰波那契数 2.使用最小花费爬楼梯 3.解码方法 学过算法的应该知道,动态规划一直都是一个非常难的模块,无论是状态转移方程的定义还是dp表的填表,都非常难找到思路。在这个算法的支线专题中我会结合很多力…

stm32启动文件里面的__main和主函数main()

一、__main和main()之间的关系 先来对stm32启动过程简单学习 启动文件里面的Reset_Handler: 调用过程: stm32在启动后先进入重启中断函数Reset_Handler,其中会先后调用SystemInit和__main函数, __main函数属于c库函数&…

在mysql中索引字段类型是设置为bigint?还是varchar好?

在数据库设计中,选择索引字段的数据类型时,bigint和varchar各有优缺点,具体选择哪种类型取决于字段的用途、数据特性和查询需求。以下是对两者特点的对比: bigint: •优点: •大整数类型,适合存储整数或长整…

基于SpringBoot+Vue健身房管理系统(源码+部署说明+演示视频+源码介绍)

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

Selenium 驱动配置 和 元素定位

目录 驱动配置 元素定位 By类普通参数方法 CSS选择器参数方法 By类xpath参数方法 驱动配置 //新建chrome浏览器驱动配置 ChromeOptions options new ChromeOptions();//添加参数,允许远程访问 options.addArguments("--remote-allow-origins*");//新…

Transformer的前世今生 day03(Word2Vec、如何使用在下游任务中)

前情回顾 由上一节,我们可以得到: 任何一个独热编码的词都可以通过Q矩阵得到一个词向量,而词向量有两个优点: 可以改变输入的维度(原来是很大的独热编码,但是我们经过一个Q矩阵后,维度就可以控…

day29|leetcode|C++|491. 非递减子序列|46. 全排列|47. 全排列 II

Leetcode 491. 非递减子序列 链接:491. 非递减子序列 thought: 设 stack 中最后一个值的位置为 last。如果 stack 为空,则 last -1。 设当前正在处理的位置为 pos。如果在 nums 的子区间 [last1, pos) 中,存在和 nums[pos] 相同的值&…

Kafka broker

1. zk中存储的kafka信息 /kafka/brokers/ids存储了在线的broker id。 /kafka/brokers/topics/xxx/partitions/n/state存储了Leader是谁以及isr队列 /kafka/controller辅助Leader选举,每个broker都有一个controller,谁先在zk中注册上,谁就辅助…

Autosar MCAL配置——Fls

文章目录 一、FLS基础知识二、达芬奇配置2.1 创建Fls模块2.2 FlsGeneralFlsDataFlash2.3 FlsConfigSet0FlsSector2.4 FlsPublishInfomation一、FLS基础知识 主要提供对Flash的读,写,擦相关操作服务;如果底层硬件支持的话,也提供一些配置接口来设置擦/写保护功能。 flash操…

低成本养号降低封号风险,这种方式你试过了吗?

众所周知,对于那些主要依赖海外社交媒体平台(如Facebook脸书、推特X、Instagram等)进行引流和投广、谷歌上架应用等拓展海外业务、主要赚海外money的朋友们而言,账号一旦被封,就会严重影响业务进程,甚至可能…

腾讯云服务器多少钱一年?价格表新鲜出炉(2024)

腾讯云服务器多少钱一年?61元一年起。2024年最新腾讯云服务器优惠价格表,腾讯云轻量2核2G3M服务器61元一年、2核2G4M服务器99元一年可买三年、2核4G5M服务器165元一年、3年756元、轻量4核8M12M服务器646元15个月、4核16G10M配置32元1个月、312元一年、8核…

【研究僧总结】回顾第1095个创作日

目录 前言一. 机缘二. 日常三. 展望 前言 感觉刚过1024不久,现在又来个1095创作日 一. 机缘 研究僧一直在找平台做笔记,方便之后的回顾总结,也让各位网友见证你我的成长,相互学习 止不住的写文止不住的成长,大家共同…

Docker 之 数据卷

目录 1. 数据卷是什么 1.1 运行一个带有容器卷存储功能的容器实例 2.能干什么 3. 容器卷案例 3.1 宿主机vs容器之间映射添加容器卷 3.1.1 命令添加: 3.1.2 查看数据卷是否挂载成功 3.1.3 容器和宿主机之间数据共享 3.2 读写规则映射添加说明 3.2.1 读写&…

java系统部署到Linux

1、安装java 1.8JDK 卸载Open JDK 首先,我们先检查系统是否自带了 JDK。输入命令 java -verison批量删除 rpm -qa | grep java | xargs rpm -e --nodeps下载并安装JDK 我们在 user 目录下建立一个新的 java文件夹,用来存放 JDK文件。 jdk下载地址 …

快速上手 Elasticsearch:Docker Compose 部署详解

最近面试竞争日益激烈,Elasticsearch作为一款广泛应用的中间件,几乎成为面试中必考的知识点。最近,AIGC也备受关注,而好多的AI项目中也采用了Elasticsearch作为向量数据库,因此我们迫切希望学习Elasticsearch。对于学习…