![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Kato33
这个作者很懒,什么都没留下…
展开
-
第三章 栈和队列
算法设计题: (7) 假设以数组Q[m]存放循环队列中的元素,同时设置 一 个标志ta$, 以tag= 0 和tag= 1 来区别在队头指针 (front) 和队尾指针 (rear) 相等时,队列状态为“空”还是“满“ 。 试编写与 此结构相应的插入 (enqueue) 和删除 (dequeue) 算法。 #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #defin原创 2020-08-05 21:06:55 · 695 阅读 · 0 评论 -
第三章 栈和队列
算法设计题: (6) 假设以带头结点的循环链表表示队列,并且只设 一 个指针指向队尾元素结点 (注意:不 设头指针), 试编写相应的置空队列、 判断队列是否为空、 入队和出队等算法。 #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -1 typedef int Status; typedef int原创 2020-08-05 15:42:52 · 94 阅读 · 0 评论 -
第三章 栈和队列
算法设计题: (5)假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序 列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。 #include <stdio.h> #include <string.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -1 typedef int Status; typedef char原创 2020-08-05 14:21:23 · 943 阅读 · 0 评论 -
第三章 栈和队列
算法设计题: (3) 设从键盘输入 一 整数的序列: a, a 2 , a 瓦…, a n , 试编写算法实现:用栈结构存储输入的整 数, 当 ai != -1 时,将 ai 进栈;当 ai = -1 时,输出栈顶整数并出栈。算法应对异常情况(入栈满 等) 给出相应的信息。 #include <stdio.h> #include <iostream> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #defin原创 2020-08-04 21:23:19 · 168 阅读 · 0 评论 -
第三章 栈和队列
算法设计题: (2)回文是指正读反读均相同的字符序列,如 “abba” 和 “abdba” 均是回文,但 “good” 不 是回文。试写一个算法判定给定的字符序列是否为回文。(提示:将 一 半字符入栈) #include <stdio.h> #include <string.h> #include <iostream> typedef struct SNode { char data; struct SNode *next; } SNode, *Link原创 2020-08-04 18:11:04 · 174 阅读 · 0 评论 -
第三章 栈和队列
算法设计题: (1) 将编号为 0 和 1 的两个栈存放于 一 个数组空间 V[m] 中,栈底分别处千数组的两端。当第 0 号栈的栈顶指针 top[O] 等于 -1 时该栈为空;当第 1 号栈的栈顶指针 top[l] 等千 m 时,该栈为空。 两个栈均从两端向中间增长(见图 3.17) 。试编写双栈初始化,判断栈空、栈满、进栈和出栈等算 法的函数。双栈数据结构的定义如下: #include <stdio.h> #include <iostream> #define OK 1 #de原创 2020-08-04 17:01:21 · 113 阅读 · 0 评论 -
第三章 栈和队列
案例一:十进制数转换成八进制数 // 数制的转换 将一个十进制的数转化成八进制输出 #include <stdio.h> #include <iostream> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -1 typedef int SElemtype; typedef int Status; typedef struct SNode { SElemtype d原创 2020-08-03 02:19:11 · 83 阅读 · 0 评论 -
第三章 栈和队列
链式队列的简单案例实现: #include <stdio.h> #include <iostream> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -1 typedef int Status; typedef int QElemType; //队列的链式存储结构 typedef struct QNode { QElemType data; struct Q原创 2020-08-03 01:34:16 · 79 阅读 · 0 评论 -
第三章 栈与队列
循环队列的简单实现: #include <stdio.h> #include <iostream> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -1 #define MAXSIZE 20 typedef int QElemType; typedef int Status; typedef struct { QElemType *base; // 队列的基地址原创 2020-08-02 22:02:22 · 81 阅读 · 0 评论 -
第三章 栈与队列
链式栈的简单实现: #include <stdio.h> #include <iostream> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -1 #define MAXSIZE 20 typedef int Status; typedef int ElemType; typedef struct StackNode { ElemType data; s原创 2020-07-29 10:53:26 · 76 阅读 · 0 评论 -
第三章 栈与队列
#include <stdio.h> #include <iostream> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -1 #define MAXSIZE 20 typedef int Status; typedef int SElemType; // 顺序栈的存储结构 typedef struct { SElemType *base; // 栈底指针原创 2020-07-29 10:28:43 · 97 阅读 · 0 评论 -
第二章 线性表
(8)设计一个算法,删除递增有序链表中值大于mink且小于maxk: 的所有元素(mink和 maxk 是给定的两个参数,其值可以和 表中的元素相同,也可以不同)。 /* (8)设计一个算法,删除递增有序链表中值大于mink且小于maxk: 的所有元素(mink和 maxk 是给定的两个参数,其值可以和 表中的元素相同,也可以不同)。 */ #include <stdio.h> #include <iostream> #define LENGTH 5 typedef struc原创 2020-07-25 14:45:34 · 127 阅读 · 0 评论 -
第二章 线性表
(7)设计 一 个算法,将链表中所有结点的链接方向“原地”逆转,即要求仅利 用原表的存储空间,换句话说,要求算法的空间复杂度为 O(1) 。 /* (7)设计 一 个算法,将链表中所有结点的链接方向“原地”逆转,即要求仅利 用原表的存储空间,换句话说,要求算法的空间复杂度为 O(1) 。 */ #include <stdio.h> #include <iostream> #define LENGTH 5 typedef struct LNode { int data;原创 2020-07-25 13:58:18 · 66 阅读 · 0 评论 -
第二章 线性表
(6)设计 一 个算法,通过 一 趟遍历确定长度为 n 的单链表中值最大的结点。 /* (6)设计 一 个算法,通过 一 趟遍历确定长度为 n 的单链表中值最大的结点。 */ #include <stdio.h> #include <iostream> #define LENGTH 5 typedef struct LNode { int data; struct LNode *next; } LNode, *LinkList; void CreatList_R原创 2020-07-24 23:24:30 · 62 阅读 · 0 评论 -
第二章 线性表
(5)设计算法将 一 个带头结点的单链表A 分解为两个具有相同结构的链表B 和C, 其中B 表的结点为 A 表中值小于零的结点,而 C 表的结点为 A 表中值大于零的结点(链表 A 中的元素 为非 零整数,要求 B 、 C 表利用 A 表的结点)。 /* (5)设计算法将 一 个带头结点的单链表A 分解为两个具有相同结构的链表B 和C, 其中B 表的结点为 A 表中值小千零的结点,而 C 表的结点为 A 表中值大于零的结点(链表 A 中的元素 为非 零整数,要求 B 、 C 表利用 A 表的结点)。 */原创 2020-07-24 21:51:35 · 74 阅读 · 0 评论 -
第二章 线性表
(4) 巳知两个链表 A 和 B 分别表示两个集合,其元素递增排列。请设计算法 求出两个集合 A 和B 的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并以 同样的形式存储, 同时返回该集合的元素个数。 #include <stdio.h> #include <iostream> #define LENGTH 5 typedef struct LNode { int data; struct LNode *next; } LNode, *LinkLis原创 2020-07-24 18:49:56 · 76 阅读 · 0 评论 -
第二章 线性表
(3)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计 一 个算法,用千求出 A与B的交集,并存放在A链表中。 #include <stdio.h> #include <stdlib.h> #define LENGTH 5 typedef struct LNode { int data; struct LNode *next; } LNode, *LinkList; //后插法 void CreatList_R(LinkList &L, int原创 2020-07-24 15:46:31 · 94 阅读 · 0 评论 -
第二章 线性表
(1 )将两个递增的有序链表合并为 一 个递增的有序链表。要求结果链表仍使用原来两个链表 的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。 /* (1)将两个递增的有序链表合并为 一 个递增的有序链表。要求结果链表仍使用原来两个链表 的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。 */ #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define LE原创 2020-07-24 01:43:32 · 74 阅读 · 0 评论