读《算法与数据结构》第三、四、五章

读《算法与数据结构》第三、四、五章

一、字符串及其抽象数据结构

1、基本概念
(1)字符串是一种特殊地线性表

二、栈

1、栈及其抽象数据类型
(1)栈是一种特殊地线性表,所有地插入和删除都限制在表的同一端进行

2、栈的溢出
(1)由于栈是一个动态结构,而数组是静态结构,因此会出现溢出问题
(2)如果元素足够,如果再作进栈运算,则会产生溢出,称为上溢Overflow
(3)如果对空栈进行出栈运算,也会产生溢出,通常称为下溢Underflow

3、栈与递归
(1)静态分配
在非递归调用的情况下,数据区的分配可以在程序运行前进行,一直到整个程序运行结束才释放
(2)动态分配
递归调用时,被调函数的局部量不能分配给固定的单元,而必须每调用一次就分配一份,当前程序中的所有的量(包括形参、局部变量和中间工作单元等)都必须是最近一次递归调用时所分配的数据区中的量
(3)运行栈: 动态分配的处理方法, 在内存中开辟一个存储区域称为运行栈

三、回溯法

1、迷宫问题
(1)要求
从入口到出口的一个以空白方块构成的无环路径
(2)从入口出发,沿某一个方向进行探索,若能走通,则继续向前走
(3)否则沿原路返回,换一个方向再进行探索,直到所有可能的通路都探索到为止

四、队列

1、队列及其抽象数据类型
(1)队列是一种只允许在表的一端进行插入操作,而在另一端进行删除操作的线性表

2、队列的实现
(1)队列实现时通常采用:顺序表示、链路表示

3、队列的溢出问题
(1)上溢:当队列满时,再作进队操作
(2)下溢:当队列为空时,作删除操作

4、队列的应用—农夫过河
(1)题目
读《算法与数据结构》第三、四、五章
读《算法与数据结构》第三、四、五章
读《算法与数据结构》第三、四、五章
读《算法与数据结构》第三、四、五章
5、两种不同的搜索策略
(1)广度优先breadth_first搜索:使用队列实现
(2)深度优先depth_first搜索:使用栈实现