数据结构--栈、队列的插入、删除、查找详解

张开发
2026/4/18 1:35:21 15 分钟阅读

分享文章

数据结构--栈、队列的插入、删除、查找详解
1 栈和队列1.1 栈和队列的定义和特点栈后进先出 队列先进先出1.1.1 栈的应用1.1.2 队列的应用1.2 栈的定义和特点1.2.1 栈的相关概念1.2.1 栈和线性表的区别1.3 队列的定义和特点1.4 栈和队列的相关案例1.4.1 案例一进制转换 (栈)例题1.4.2 案例二括号匹配的检验 (栈)算法思路1.4.3 案例三表达式求值 (栈)算法思路1.4.4 舞伴问题1.5 栈的表示和操作的实现1.5.1 栈的抽象数据类型的类型定义1.5.2 顺序栈的表示和实现1.5.3 顺序栈的数据类型定义1.5.4 顺序栈的初始化注意new SElemType[MAXSIZE] 做了什么new 是C里的动态内存分配关键字C语言用 malloc SElemType 是栈里存的元素类型比如 int 、 char 你可以理解成“要存的东西的类型”MAXSIZE 是栈的最大容量比如100代表最多存100个元素这句话的本质向系统申请一块连续的、大小为 MAXSIZE 个 SElemType 元素的内存空间并且返回这块空间的起始地址。为什么要把这个地址赋值给 S.base S.base 是栈底指针它需要指向栈的起始位置。我们刚用 new 申请了一块连续内存这块内存就是我们的「栈」把这块内存的起始地址赋值给 S.base 就相当于让 S.base 指向了栈的最底部0号位置从此 S.base 就锚定了栈的起点再也不会变了if (!S.base)不是在判断栈空不空是在判断栈这个“容器”本身有没有被造出来1.5.5 顺序栈判断栈是否为空1.5.6 求顺序栈的长度1.5.7 清空顺序栈1.5.8 销毁顺序栈1.5.9 顺序栈的入栈注意在C/C中如果 if 条件后面没有写大括号 {} 那么 if 只会控制紧接在它后面的那1条语句这条语句执行完或者不执行 if 的控制就结束了后面的代码不受if影响一定会执行1.5.10 顺序栈的出栈1.5.11 链栈的表示和实现1.5.12 链栈的初始化1.5.13 判断链栈是否为空1.5.14 链栈的入栈1.5.15 链栈的出栈1.5.16 取栈顶元素1.6 栈与递归1.6.1 递归的定义递归定义的数学函数具有递归特性的数据结构可递归求解的问题1.6.2 分治法1.6.3 函数调用过程例题1.6.4 递归的优缺点方法1方法21.6.5 借助栈改写递归的方法1.7 队列的表示和操作的实现1.7.1 队列的抽象数据类型定义1.7.2 队列的顺序表示和实现front 表示队头元素的下标整数类型不是指针rear表示队尾元素的下标整数类型不是指针1.7.3 真溢出与假溢出1.7.4 解决假上溢的方法–循环队列1.7.5 循环队列的初始化Q.base表示数组当中首元素的地址所以是一个指针类型1.7.6 循环队列的长度1.7.7 循环队列入队1.7.8 循环队列出队1.7.9 取队头元素1.7.10 队列的链式表示和实现1.7.11 链队列初始化1.7.12 销毁链队列意思是把p指向头结点的next域也就是用p指向首元结点保存第一个位置的数据然后释放头结点在把头指针移到下一个数据循环依次释放1.7.13 将元素e入队1.7.14 链队列出队算法步骤如果尾指针恰好指向p要删除的这个数那么运算结束后这个数已经被清空了我们要改变尾指针和头指针的指向尾指针和头指针一样都指向头结点。1.7.15 求链队列的队头元素

更多文章