双向循环链表:始终保持被频繁访问的结点总是靠近表头结点 双向循环链表:始终保持被频繁访问的结点总是靠近表头结点-数据结构题目题目:设有一个双向循环链表,每个结点中除有prior,data和next三个域外,还增设了一个访问频度域freq。在链表被起用之前,频度域freq的值均初始化为零,而每当对链表进行一次LOCATE(L,x)的操作后,被访问的结点(即元素值等于x的结点)中的频度域freq的值便增1,同时调整链表中结点之间的次序,使其按访问频度非递增的次序顺序排列,以便始终保持被频繁访问的结点总是靠近表头结点。试编写符合上述要求的LOCATE操作的算法。
双向循环链表:将偶数位元素移到表尾 双向循环链表:将偶数位元素移到表尾-数据结构题目题目:设以带头结点的双向循环链表表示的线性表L=(a1,a2,…,an)。试写一时间复杂度为O(n)的算法,将L改造为L=(a1,a3,…,an,…,a4,a2)。算法思想:从表尾开始,指针逐渐前移,每隔一个数据元素就将其移到表尾,实现线性表的改造。c++代码如下:#include <iostream>#include <stdlib.h>using namespace std;typedef struct LNode
单向链表改双向链表 单向链表改双向链表-数据结构题目(原题来自严蔚敏老师教材习题册2.32)题目:已知有一个单向循环链表,其每个结点中含三个域:prior,data和next,其中data为数据域,next为指向后继结点的指针域,prior也为指针域,但它的值为空(NULL),试编写算法将此单向循环链表改为双向循环链表,即使prior成为指向前驱结点的指针域。算法思想:先建立一个单链表,然后写一个函数,将prior指针指向它的前驱元素即可完成修改。c++代码如下:#include <iostream>
找出n个数中相差最小两个数,并输出其差值的绝对值 求n个数中最小差值绝对值-数据结构题目题目:给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。算法思想:用比较的方法,通过差值的计算,逐个数据地找出与当前元素数据差值最小的元素,再将差值的绝对值返回。c++代码如下:#include <iostream>#include <stdlib.h>using namespace std;typedef struct LNode{ struct LNode *prior; //指针
CSP题目:小明分蛋糕 CSP题目:小明分蛋糕-数据结构题目题目:小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, …, an。小明想分给每个朋友至少重量为k的蛋糕。小明的朋友们已经排好队准备领蛋糕,对于每个朋友,小明总是先将自己手中编号最小的蛋糕分给他,当这个朋友所分得蛋糕的重量不到k时,再继续将剩下的蛋糕中编号最小的给他,直到小明的蛋糕分完或者这个朋友分到的蛋糕的总重量大于等于k。算法思想:先对蛋糕按重量进行排序,然后依次分发。定义一个中间量计算当前这位朋友拿到的蛋糕重量,当
利用栈操作实现八皇后问题求解 利用栈操作实现八皇后问题求解-数据结构题目思路:使用递归思想,每一行逐个位置放入皇后,判断是否冲突,若冲突,则试探下一个位置,若不冲突,则继续下一行的递归,直至全部放置完成。c++代码如下:#include <stdlib.h>#include <iostream>using namespace std;#define StackInitSize 256 //初次分配空间大小 #define StackIncrement 128 //空间分配
链表:删除A表中既在B表出现又在C表出现的元素 删除A表中既在B表出现又在C表出现的元素数据结构题目题目:已知A,B和C为三个递增有序的线性表,现要求对A表作如下操作:删去那些既在B表中出现又在C表中出现的元素。试对链表编写实现上述操作的算法,请释放A表中的无用结点空间,并分析你的算法的时间复杂度(注意:题中没有特别指明同一表中的元素值各不相同)。算法思想:先比较B表和C表,找到同样的元素并存入数组中,再遍历A表,比较是否有元素和数组中的元素相同,若相同,则删除该元素,即释放元素结点。题目来自数据结构严蔚敏教材习题集2.30。c++代码如下:
顺序表:删除A表中既在B表出现又在C表出现的元素 删除A表中既在B表中出现又在C表中出现的元素数据结构题目题目:已知A,B和C为三个递增有序的线性表,现要求对A表作如下操作:删去那些既在B表中出现又在C表中出现的元素。试对顺序表编写实现上述操作的算法,并分析你的算法的时间复杂度(注意:题中没有特别指明同一表中的元素值各不相同)。算法思想:先比较B表和C表,找到同样的元素并存入数组中,再遍历A表,比较是否有元素和数组中的元素相同,若相同,则删除该元素。题目来自数据结构严蔚敏教材习题集2.29。c++代码如下:#include <iostre
链表:由两个递增有序线性表A、B归并新的递减有序线性表C 由两个递增有序线性表A、B归并新的递减有序线性表C数据结构题目严蔚敏版数据结构教材题集2.24假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。此题的算法思想为:首先将B表连接到A表后面,即连接后的A表为新的C表,再进行递减有序的排序。c++代码如下:#include <iostream>#include &l
CSP题目:小H小W买菜装车聊天时间 小H小W买菜装车聊天时间CSP题目问题描述:小H和小W来到了一条街上,两人分开买菜,他们买菜的过程可以描述为,去店里买一些菜然后去旁边的一个广场把菜装上车,两人都要买n种菜,所以也都要装n次车。具体的,对于小H来说有n个不相交的时间段[a1,b1],[a2,b2]…[an,bn]在装车,对于小W来说有n个不相交的时间段[c1,d1],[c2,d2]…[cn,dn]在装车。其中,一个时间段[s, t]表示的是从时刻s到时刻t这段时间,时长为t-s。 由于他们是好朋友,他们都在广场上装车的时候会聊天,他
CSP题目:小明种苹果树 小明种苹果树CSP题目题目描述:小明在他的果园里种了一些苹果树,这些苹果树排列成一个圆。为了保证苹果的品质,在种植过程中要进行疏果操作。为了更及时地完成疏果操作,小明会不时地检查每棵树的状态,根据需要进行疏果。检查时,如果发现可能有苹果从树上掉落,小明会重新统计树上的苹果个数(然后根据之前的记录就可以判断是否有苹果掉落了)。在全部操作结束后,请帮助小明统计相关的信息。输入格式:从标准输入读入数据。第1行包含一个正整数N,表示苹果树的棵数。第1+i行(1≤i≤N),每行的格式为mi,ai1,ai2
链表实现约瑟夫环问题求解 约瑟夫环问题数据结构题目:输入正整数n、m(m<n),设有n个人坐成一圈,从第1个人开始循环报数,报到m的人出列,然后再从下一个人开始报数,报到m的人又出列,如此重复,直到所有的人都出列为止。要求用链式结构实现,按出列的先后顺序输出每个人的信息。c++代码如下:#include <iostream>#include <stdlib.h>using namespace std;typedef struct LNode{ char data;
顺序结构实现约瑟夫环问题求解 约瑟夫环问题数据结构题目:输入正整数n、m(m<n),设有n个人坐成一圈,从第1个人开始循环报数,报到m的人出列,然后再从下一个人开始报数,报到m的人又出列,如此重复,直到所有的人都出列为止。要求用顺序结构实现,按出列的先后顺序输出每个人的信息。c++代码如下:#include <iostream>#include <stdlib.h>using namespace std;#define ListInitSize 256 //初次分配空间大小 #d
链表实现并集且元素递减有序,互不相同 设线性表A、B,元素值为整型,且递减有序,编写函数,实现下列功能:采用链式结构,要求在A的空间上构成一个新线性表C,其元素为A和B元素的并集,且表C中的元素值递减有序(互不相同)。数据结构题目C++代码实现如下:#include <iostream>#include <stdlib.h>using namespace std;typedef struct LNode{ int data; //数据域 struct LNode *next;
顺序表实现并集且元素递减有序,互不相同 设线性表A、B,元素值为整型,且递减有序,编写函数,实现下列功能:采用顺序结构,要求在A的空间上构成一个新线性表C,其元素为A和B元素的并集,且表C中的元素值递减有序(互不相同)。数据结构题目c++代码如下:#include <iostream>#include <stdlib.h>using namespace std;#define ListInitSize 16 //初次分配空间大小 #define ListIncrement 8 //
链式结构的选择、冒泡排序 设元素值为整型的线性表L,采用链式结构存储,编写函数,分别用选择/冒泡排序算法实现线性表的表排序。数据结构题目冒泡排序:#include <iostream>#include <stdlib.h>using namespace std;typedef struct LNode{ int data; //数据域 struct LNode *next; //指针域 } LNode, *LinkList;typedef struct
顺序表的选择、冒泡排序 设元素值为整型的线性表L,采用顺序结构存储,编写函数,分别用选择/冒泡排序算法实现线性表的表排序。数据结构题目冒泡排序:#include <iostream>#include <stdlib.h>using namespace std;#define ListInitSize 256 //初次分配空间大小 #define ListIncrement 128 //空间分配增量大小 typedef struct List{ int *pDat
CSP题目:跳一跳小游戏 CSP 题目问题描述:近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的中心则获得1分;跳到方块中心时,若上一次的得分为1分或这是本局游戏的第一次跳跃则此次得分为2分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将+2,+4,+6,+8…)。 现在给出一个人跳一跳的全过程,请你求出他本局游戏的得分(按照题目描述的规则)。输入格式: 输入包含
CSP题目:计算小明回家所需时间 CSP 题目问题描述:一次放学的时候,小明已经规划好了自己回家的路线,并且能够预测经过各个路段的时间。同时,小明通过学校里安装的“智慧光明”终端,看到了出发时刻路上经过的所有红绿灯的指示状态。请帮忙计算小明此次回家所需要的时间。输入格式: 输入的第一行包含空格分隔的三个正整数 r、y、g,表示红绿灯的设置。这三个数均不超过 106。 输入的第二行包含一个正整数 n,表示小明总共经过的道路段数和路过的红绿灯数目。 接下来的 n 行,每行包含空格分隔的两个整数 k、t。k=0 表示经过了一段道路