第十七章 经典抽象数据类型ADT
1.如何获取内存来存储值。三种可选方案:静态数组,动态分配的数组和动态分配的链式结构。
2.堆栈,后进先出。
实现堆栈:
#define STACK_TYPEint //堆栈所存储的值的类型
voidpush(STACK_TYPE value);入栈
void pop(STACK_TYPEvalue);出栈
STACK_TYPEtop(void);返回栈顶的值
int is_empty(void);判空
int is_full(void);判满
3.队列,先进先出
实现队列:
#define QUEUE_TYPEint//队列所存储的值的类型
voidcreate_queue(size_t size);//创建队列
voiddestroy_queue(void);//销毁队列
voidinsert(QUEUE_TYPE value);//插入新元素
void delete(void);从队列移除一个元素丢弃
QUEUE_TYPEfirst(void);//返回第一个元素的值
int is_empty(void);判空
int is_full(void);判满
4.二叉搜索树接口
#define TREE_TYPEint//树的值的类型
voidinsert(TREE_TYPE value);//向树添加一个新值
TREE_TYPE*find(TREE_TYPE* value);//查找一个特定值
voidpre_order_traverse(void (*callback)(TRRR_TYPE value));//先序遍历
第十八章 运行时环境
1.虚拟内存:由操作系统实现,在需要时把程序的活动部分放入内存并把不活动的部分复制到硬盘中,这样就可以允许系统运行大型的程序。
2.是链接器而不是编译器决定外部标识符的最大长度
3.不能链接由不同编译器产生的程序。
4.优化程序:优化算法比优化代码更有效果。
5. 静态变量初始化: int static_variable = 5; 编译成汇编: .data 进入数据区 .global _static_variable 定义全局变量 _static_variable: 为全局变量赋值 .long 5 |