![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
督促学习
hhy不许摸鱼
这个作者很懒,什么都没留下…
展开
-
八皇后问题栈dfs实现
问题八皇后问题:设8皇后问题的解为 (x1, x2, x3, …,x8), 约束条件为:在8x8的棋盘上,其中任意两个xi 和xj不能位于棋盘的同行、同列及同对角线。要求用一维数组进行存储,输出所有可能的排列。思路用dfs的话,首先可以先把问题简化,不需一个单元一个单元的搜索。显然同一行的单元只能有且仅有一个皇后。不妨利用单行皇后的唯一性将stack数组中的第i个元素当作第i行的皇后所在的列数。然后进行递归深搜。/*Lab2_3_19281158 * */#include<iostrea原创 2021-03-31 14:13:54 · 452 阅读 · 0 评论 -
4阶斐波那契序列队列实现
问题4阶斐波那契序列如下:f0=f1=f2=0, f3=1,…,fi=fi-1+fi-2+fi-3+fi-4,利用容量为k=4的循环队列,构造序列的前n+1项(f0, f1 , f2 ,… fn ),要求满足fn ≤200而fn+1 >200。算法对于一个队列,总有四个值在其内,用队列内的四个值计算出下一个值并将算出来的该值直接放入队尾,不考虑队满,因为要直接覆盖前面的第五个值,然后再计算,直至有一值大于200。可以推广至k。/*Lab2_2_19281158 */#include&l原创 2021-03-30 23:51:30 · 1184 阅读 · 0 评论 -
双向循环链表locate(L,x)以节点freq排序问题
问题:设有一个双向循环链表,每个结点中除有prior, data和next三个域外,还增设了一个访问频度域freq。在链表启用之前,频度域freq的值均初始化为零,而每当对链表进行一次locate(L,x)的操作后,被访问的结点(即元素值等于x的结点)中的频度域freq的值便增1,同时调整链表中结点之间的次序,使其按访问频度非递增的次序顺序排列,以便始终保持被频繁访问的结点总是靠近表头结点。试编写符合上述要求的locate操作的算法。解决:首先Locate问题不难解决,问题在于如何把freq更改后的节原创 2021-03-18 22:21:51 · 2675 阅读 · 0 评论 -
约瑟夫(Josephus)环问题(c++单向循环链表实现)
约瑟夫(Josephus)环问题:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,直到所有人全部出列为止。建立n个人的单循环链表存储结构,运行结束后,输出依次出队的人的序号。思路将n个人的password依次输入,将每个人的id,password,next写入一个结构体,形成链表的原创 2021-03-14 21:41:37 · 1872 阅读 · 2 评论 -
线性表-顺序存储结构
线性表-顺序存储结构线性表基本概念:线性结构的基本特征为:集合中必存在唯一的一个“第一元素”;集合中必存在唯一的一个 “最后元素” ;除最后元素在外,均有 唯一的后继;除第一元素之外,均有 唯一的前驱。用ADT表示:ADT List { 数据对象: D={ ai | ai ∈ElemSet, i=1,2,...,n, n≥0 } 数据关系: R1={ <ai-1, ai > | ai-1, ai∈D, i=2,...原创 2021-03-10 15:02:08 · 874 阅读 · 0 评论