
数据结构
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 · 876 阅读 · 0 评论 -
第三章 栈和队列
算法设计题:(6) 假设以带头结点的循环链表表示队列,并且只设 一 个指针指向队尾元素结点 (注意:不设头指针), 试编写相应的置空队列、 判断队列是否为空、 入队和出队等算法。#include <stdio.h>#include <stdlib.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -1typedef int Status;typedef int原创 2020-08-05 15:42:52 · 120 阅读 · 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 -1typedef int Status;typedef char原创 2020-08-05 14:21:23 · 1039 阅读 · 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 · 214 阅读 · 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 · 208 阅读 · 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 · 168 阅读 · 0 评论 -
第三章 栈和队列
案例一:十进制数转换成八进制数// 数制的转换 将一个十进制的数转化成八进制输出#include <stdio.h>#include <iostream>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -1typedef int SElemtype;typedef int Status;typedef struct SNode{ SElemtype d原创 2020-08-03 02:19:11 · 126 阅读 · 0 评论 -
第三章 栈和队列
链式队列的简单案例实现:#include <stdio.h>#include <iostream>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -1typedef int Status;typedef int QElemType;//队列的链式存储结构typedef struct QNode{ QElemType data; struct Q原创 2020-08-03 01:34:16 · 108 阅读 · 0 评论 -
第三章 栈与队列
循环队列的简单实现:#include <stdio.h>#include <iostream>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -1#define MAXSIZE 20typedef int QElemType;typedef int Status;typedef struct{ QElemType *base; // 队列的基地址原创 2020-08-02 22:02:22 · 107 阅读 · 0 评论 -
第三章 栈与队列
链式栈的简单实现:#include <stdio.h>#include <iostream>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -1#define MAXSIZE 20typedef int Status;typedef int ElemType;typedef struct StackNode{ ElemType data; s原创 2020-07-29 10:53:26 · 117 阅读 · 0 评论 -
第三章 栈与队列
#include <stdio.h>#include <iostream>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -1#define MAXSIZE 20typedef int Status;typedef int SElemType;// 顺序栈的存储结构typedef struct{ SElemType *base; // 栈底指针原创 2020-07-29 10:28:43 · 141 阅读 · 0 评论 -
第二章 线性表
(8)设计一个算法,删除递增有序链表中值大于mink且小于maxk: 的所有元素(mink和 maxk是给定的两个参数,其值可以和 表中的元素相同,也可以不同)。/*(8)设计一个算法,删除递增有序链表中值大于mink且小于maxk: 的所有元素(mink和 maxk是给定的两个参数,其值可以和 表中的元素相同,也可以不同)。*/#include <stdio.h>#include <iostream>#define LENGTH 5typedef struc原创 2020-07-25 14:45:34 · 194 阅读 · 0 评论 -
第二章 线性表
(7)设计 一 个算法,将链表中所有结点的链接方向“原地”逆转,即要求仅利用原表的存储空间,换句话说,要求算法的空间复杂度为 O(1) 。/*(7)设计 一 个算法,将链表中所有结点的链接方向“原地”逆转,即要求仅利用原表的存储空间,换句话说,要求算法的空间复杂度为 O(1) 。*/#include <stdio.h>#include <iostream>#define LENGTH 5typedef struct LNode{ int data;原创 2020-07-25 13:58:18 · 95 阅读 · 0 评论 -
第二章 线性表
(6)设计 一 个算法,通过 一 趟遍历确定长度为 n 的单链表中值最大的结点。/*(6)设计 一 个算法,通过 一 趟遍历确定长度为 n 的单链表中值最大的结点。*/#include <stdio.h>#include <iostream>#define LENGTH 5typedef struct LNode{ int data; struct LNode *next;} LNode, *LinkList;void CreatList_R原创 2020-07-24 23:24:30 · 113 阅读 · 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 · 105 阅读 · 0 评论 -
第二章 线性表
(4) 巳知两个链表 A 和 B 分别表示两个集合,其元素递增排列。请设计算法 求出两个集合 A和B 的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并以 同样的形式存储,同时返回该集合的元素个数。#include <stdio.h>#include <iostream>#define LENGTH 5typedef struct LNode{ int data; struct LNode *next;} LNode, *LinkLis原创 2020-07-24 18:49:56 · 117 阅读 · 0 评论 -
第二章 线性表
(3)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计 一 个算法,用千求出A与B的交集,并存放在A链表中。#include <stdio.h>#include <stdlib.h>#define LENGTH 5typedef struct LNode{ int data; struct LNode *next;} LNode, *LinkList;//后插法void CreatList_R(LinkList &L, int原创 2020-07-24 15:46:31 · 125 阅读 · 0 评论 -
第二章 线性表
(1 )将两个递增的有序链表合并为 一 个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。/* (1)将两个递增的有序链表合并为 一 个递增的有序链表。要求结果链表仍使用原来两个链表 的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。*/#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define LE原创 2020-07-24 01:43:32 · 96 阅读 · 0 评论