数据结构实战
文章平均质量分 66
数据结构
青山入墨雨如画
小舟何来觅帝家
展开
-
1275配对碱基链 1852玛雅文字 +map讲解 (map)
通过二分查找树实现的数据结构,元素在map中按照大小顺序存放,可以在log(n)的时间复杂度中找到该元素,每个元素是一个二元组,二元组中第一个元素是用来比较的关键字,第二个元素是任意值。因此,第一个元素必须可以使用小于号进行比较,如果是结构体,需要重载小于号。头文件 #inclue 实例化: map map 名称 定义map的迭代器对象: map::iterator 对象名称;原创 2023-02-12 19:15:50 · 313 阅读 · 0 评论 -
1302机器翻译(队列)
这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过M−1,软件会将新单词存入一个未使用的内存单元;若内存中已存入M 个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。原创 2023-02-12 21:11:13 · 353 阅读 · 0 评论 -
1489车厢调度(train)(栈)
解析:观察发现,整个调度过程其实是在模拟入栈出栈的过程,而这个过程中,我们可以分成三种状态:栈前、栈中、栈后。我们可以发现,当某个数字出栈了,说明比它小的数字要么已经出栈了,要么还在栈里,不能是入栈前状态,并且在栈中的顺序是从大到小的(从栈顶往栈底看),比如出5,那么1,2,3,4要么已经在5之前出了,要么还在栈中(假如1,3,4在栈中,从栈顶往栈底看依次为4,3,1),不能是入栈前的状态。从第一个数字开始扫描,a[i]表示当前出栈的数字,如果有比a[i]大的数字还在栈中,那么就产生矛盾,输出“NO”;原创 2023-02-11 16:36:08 · 491 阅读 · 2 评论 -
1491周末舞会 (队列)
假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。第一行两队的人数;第二行舞曲的数目。配对情况。4 67。原创 2023-02-11 21:26:28 · 520 阅读 · 0 评论 -
1493围圈报数(队列)
有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出列的顺序。n和m。出列的顺序。原创 2023-02-12 09:24:51 · 922 阅读 · 0 评论 -
1496奇怪的电梯(队列 广度优先搜索)
大楼的每一层楼都可以停电梯,而且第i层楼(1≤i≤N)上有一个数字Ki(0≤=Ki≤=N)。电梯只有四个按钮:开,关,上,下。当然,如果不能满足要求,相应的按钮就会失灵。判断循环终止条件:这道题如果能够成功到达目标楼层,即某次循环初队首元素刚好与目标层数字相等,可以提前终止循环。如果所有搜索结束后,队首元素一直不是目标楼层的层数,那么说明无法成功到达目标楼层,输出-1。共有二行,第一行为三个用空格隔开的正整数,表示N,A,B(1≤N≤200, 1≤A,B≤N),第二行为N个用空格隔开的正整数,表示Ki。原创 2023-02-12 09:23:09 · 301 阅读 · 0 评论 -
1555数列极差(队列 优先队列 )
在黑板上写了N个正整数作成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a*b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min。默认的优先队列是降序排列的优先队列,如何能让降序队列变成升序队列呢?解题,最终队列剩下的那个值就是这一行数最终算出来的结果。原来的队列是降序队列,现在的队列就成功转化成了升序队列!,再用“优先队列”存储,得到的队列和原队列正好相反,第一行,一个数为N;原创 2023-02-12 20:04:52 · 392 阅读 · 0 评论 -
1947抓住那头牛(队列 广度优先搜索)
农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0原创 2023-02-11 18:31:24 · 736 阅读 · 0 评论 -
讲解+可执行完整代码 C++ 单链表(1) 单链表的建立与动态内存的释放
链表是讲每个带存储数据元素看成一个数据结点,并为每个节点分配空间,最后将这些结点连接起来形成一个链式结构。单链表包括数据域和指针域。数据域里存放的是数据,指针域里存放着用于连接链表的指针。原创 2023-02-19 19:21:13 · 1148 阅读 · 0 评论 -
讲解+可执行完整代码 C++单链表(2)查找、插入、删除元素
此段代码仅实现查找元素的功能。运行结果1:运行结果2:运行结果3:运行结果4:运行结果相同。原创 2023-02-19 19:49:18 · 2613 阅读 · 0 评论 -
讲解+可执行完整代码 C++单链表(3)逆转单链表
运行结果4:想删除的数据不存在。运行结果2:中间部分检验;其他具体讲解见注释。原创 2023-02-19 20:07:21 · 296 阅读 · 0 评论