下载教学设计的网站,免费推广平台有哪些 请一一例举,宛城区微网站开发,怎么制作网站一键更新目录 一、栈#xff08;一#xff09;栈的基本概念#xff08;二#xff09;栈的应用#xff08;三#xff09;栈的代码实现#xff08;四#xff09;递归算法#xff08;五#xff09;栈与队列的区别 二、队列#xff08;一#xff09;队列的基本概念#xff08;… 目录 一、栈一栈的基本概念二栈的应用三栈的代码实现四递归算法五栈与队列的区别 二、队列一队列的基本概念二队列的应用三循环队列的基本概念 一、栈
一栈的基本概念 1、简述栈的特性。 答栈是被限制存取点的线性表只允许在一端进行插入或删除操作栈遵循的原则是先进后出FILO即后进的元素先被取出来。
二栈的应用 1、栈有哪些应用场景试举例至少三种 答栈有以下应用场景 ①递归及函数调用 ②表达式求值例如中后缀表达式、括号匹配等等 ③进制转换例如十进制数转为二进制数等等 ④迷宫求解 ⑤缓存机制 ⑥用栈对二叉树进行前、中、后序遍历 ⑦用栈模拟队列。 2、栈的操作原则是什么举出两个栈的应用例子。 答栈的操作原则是先进后出例如用栈对二叉树进行前、中、后序遍历以及用栈模拟队列等等。 3、简述用两个栈模拟一个队列的基本思想。 答首先定义两个栈S1和S2将所有元素依次入栈S1然后再依次出栈并进入栈S2再从栈S2出栈。
三栈的代码实现 1、写出顺序存储结构的顺序栈的结构体、栈空、栈满、进栈及出栈的关键代码。 答①顺序栈的结构体
#define MaxSize 20 //可自行设置
typedef struct {int data[MaxSize]; //存放栈中元素 使用数组int top; //栈顶指针 记录栈顶元素的位置
} SqStack; //顺序栈的类型定义 ②判断顺序栈是否为空栈的条件是S.top-1。 ③判断顺序栈是否为满栈的条件是S.topMaxSize-1。 ④将一个元素插入顺序栈中即进栈
S.top; //top指针始终指向栈顶新的元素进栈所以指针先加1
S.data[S.top]x; //将进栈元素的值传入并入栈这两行代码也可以使用一行代码S.data[S.top]x直接替换。 ⑤将一个元素从顺序栈中删除即出栈
xS.data[S.top]; //出栈
S.top--; //指针减1这两行代码也可以使用一行代码xS.data[S.top–]直接替换。
四递归算法 1、递归算法包括哪两个部分简述递归的步骤。 答一个递归算法必须包括终止条件和递归部分当递归的条件不满足时此时递归结束返回否则继续进行递归操作。 2、简述递归算法的优缺点。 答递归算法的代码简洁明确其可读性好但是其时间复杂度和空间复杂度较大且在调用栈时可能会产生溢出。
五栈与队列的区别 1、简述栈和队列的相同点和不同点。 答①不同点运算规则不同栈遵循的原则是先进后出而队列的原则是先进先出栈只允许在一端进行插入、删除操作而队列只允许在一端进行插入、另一端进行删除操作。另外两个用途不同栈由于子程序调用和保护现场而队列用于多道作业处理、指令寄存及其他运算等等 ②相同点都是操作受限的线性表逻辑结构相同且存储表示也相同顺序存储结构和链式存储结构。
二、队列
一队列的基本概念 1、队列的“先进先出”的特性是指什么 答队列遵循的原则是先进先出其特性是指最后插入队列中的元素总是最后被删除。
二队列的应用 1、队列有哪些应用 答队列的应用场景有以下 1缓冲区例如计算机与打印机中间的打印数据缓冲区 2页面替换算法 3图的广度优先搜索、树的层次遍历都借助到了队列的基本思想。
三循环队列的基本概念 1、怎么解决队列“假溢出”的问题并写出相关的代码。 答将存储队列的一维数组首尾相连成环形成循环队列其中队头指针、队尾指针加1时通过取余运算实现从而防止队列的“假溢出”。进对针对队尾指针即Q.rearQ.rear1%MAXSIZE出队针对队头指针即Q.frontQ.front1%MAXSIZE。 2、什么是循环队列给出循环队列中元素个数的计算式设最大长度为N队首指针FRONT队尾指针REAR。 答循环队列也就是将顺序队列中的一维数组首尾相连成环即在逻辑上视为一个环连接起来让队首指针和队尾指针沿着环走循环队列中元素个数的计算式为REAR-FRONTN%N。