线性结构——栈与队列

内核:内核是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。是连接应用程序和硬件的桥梁。

一、内存五分区作用?

堆区:该区由程序员申请后使用,需要手动释放否则会造成内存泄漏。 如果程序员没有手动释放,那么程序结束时可能由OS回收。

栈区:存放函数形参和局部变量(auto类型),由编译器自动分配和释放。

静态/全局区:存放全局变量和静态变量(包括静态全局变量与静态局部变量),初始化的全局变量和静态局部变量放在一块,未初始化的放在另一块。

文本区:常量在统一运行被创建,常量区的内存是只读的,程序结束后由系统释放。

代码区:存放程序的二进制代码,内存由系统管理。

二、栈

1、保存内容

局部变量、函数的形参和返回值;函数的调用关系。

通常<保护、恢复现场>遵循先进后出、后进先出(FILO)。

2、程序运行过程中的栈数据结构中的栈有什么区别?

(1)程序运行过程中的栈:是系统栈,由系统维护

(2)数据结构中的栈:是我们自己在内存中开辟的用来保存数据的结构,由自己实现、自己维护

栈结构:只允许从一端进行数据的插入(入栈(压栈))删除(出栈(弹栈))的线性存储结构。

3、分类

(1)数组模拟先进后出:顺序栈

满增长、满减栈、空增栈、空减栈。

①栈顶所在位置是否有元素?

满栈(有);空栈(无)。

②栈的增长方向?

增栈:(栈底)内存低地址—>内存高地址(栈顶);减栈:(栈底)内存高地址—>内存低地址(栈顶)。

(2)链表模拟先进后出:链式栈(stack)

表头作为栈顶,表尾作为栈底。——效率高

编程步骤:①创建栈;②入栈;③出栈;④清空栈;⑤判空;⑥获取栈顶元素;⑦销毁栈。

eg:

(1)头文件

(2)操作

(3)主函数调用

三、队列

主要用于缓存数据 ,采集—>队列—>发送。完成两线程间数据共享,之前用全局变量。

遵循先进先出、后进先出(FIFO)。

允许从一端插入数据(入队),另一端删除数据(出队)的线性存储结构。

分类:①数组:顺序队列;②链表:链式队列。

注:顺序队列存在假溢出问题(缓存区),一般用循环队列。

链式队列编程步骤:①创建队列;②入队;③出队;④判空;⑥清空队列;⑥获取队头y元素;⑦销毁队列。

eg:

(1)头文件

(2)操作

(3)主函数调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值