《数据结构》2 链表
sdutacm
鹏不是这个朋
本 sdut 硕 szu
展开
-
sdutoj-3837-素数链表
Description我们定义素数链表为元素全部是素数的链表。给定一个初始含有 n 个元素的链表,并给出 q 次删除操作,对于每次操作,你需要判断链表中指定位置上的元素,如果元素存在且不是素数则删除。在所有操作完成后你还需要检查一下最终链表是否是一个素数链表。Input输入数据有多组。第 1 行输入 1 个整数 T (1 <= T <= 25) 表示数据组数。对于每组数据:第 1 行输入 2 个整数 n (1 <= n <= 50000), q (1 <= q &原创 2020-09-27 09:10:59 · 182 阅读 · 0 评论 -
sdut-oj-4205-寻找关键点
Description现定义关键点为一条链中处于中间位置的节点,例如 1 3 4中,3就是这个整数链中的关键点。现在小玉得到了一个整数链,确保链中的各个数都互不相同且数列中数的个数为奇数。可是,由于小玉的一些特殊要求,她可能会对这个链进行一些特别的操作。操作 1 :给定两个数a和b,每次删除链中值为a和值为b两个节点。操作 2 :给定两个数a和b,每次在链中值为1的节点后插入a,在链中值为2的节点后插入b。由于小玉特殊的要求,她保证链中肯定会有值为1和2的节点,并且这两个节点永远不会被删除。保证原创 2020-09-26 21:21:09 · 194 阅读 · 0 评论 -
数据结构实验之链表八:Farey序列
DescriptionFarey序列是一个这样的序列:其第一级序列定义为(0/1,1/1),这一序列扩展到第二级形成序列(0/1,1/2,1/1),扩展到第三极形成序列(0/1,1/3,1/2,2/3,1/1),扩展到第四级则形成序列(0/1,1/4,1/3,1/2,2/3,3/4,1/1)。以后在每一级n,如果上一级的任何两个相邻分数a/c与b/d满足(c+d)<=n,就将一个新的分数(a+b)/(c+d)插入在两个分数之间。对于给定的n值,依次输出其第n级序列所包含的每一个分数。Input输原创 2020-09-26 19:40:54 · 125 阅读 · 0 评论 -
sdutoj-4209-移动小球
Description给你n个小球,从左到右编号依次为1,2,3,4,5,6…n排成一行。现在有以下2种操作:A x y表示把编号为x小球移动到编号为y的小球的左边(和y相邻)。Q x为询问编号为x的小球左边的球号,如果x左边没有小球的话输出"cyk666"。Input第一行输入一个T,表示有T组测试数据。(1<=T<=100)随后每一组测试数据第一行是两个整数N,M,其中N表示球的个数(1 随后有M行询问,第一个字符是操作类型s。当s为’A’时,输入x,y表示把编号为x小球移动到编号原创 2020-09-26 17:14:56 · 370 阅读 · 0 评论 -
sdutoj-3781-数组操作
Description给你一个长度为 n 的数组,并给出如下几种操作:在下标为 a 的位置插入一个整数 b,如果其后有元素,则全部后移。例如,数组为 1, 2, 3,在下标为 1 的位置插入 4,则数组变为:1, 4, 2, 3。删除下标为 a 的元素,如果其后有元素,则全部前移。例如,数组为 1, 2, 3,删除下标为 0 的元素,则数组变为:2, 3。修改下标为 a 的元素的值为 b。输出整个数组。Input输入数据有多组(数据组数不超过 10),到 EOF 结束。对于每组数据:首先输原创 2020-09-26 16:16:09 · 417 阅读 · 0 评论 -
数据结构实验之链表九:双向链表
Description学会了单向链表,我们又多了一种解决问题的能力,单链表利用一个指针就能在内存中找到下一个位置,这是一个不会轻易断裂的链。但单链表有一个弱点——不能回指。比如在链表中有两个节点A,B,他们的关系是B是A的后继,A指向了B,便能轻易经A找到B,但从B却不能找到A。一个简单的想法便能轻易解决这个问题——建立双向链表。在双向链表中,A有一个指针指向了节点B,同时,B又有一个指向A的指针。这样不仅能从链表头节点的位置遍历整个链表所有节点,也能从链表尾节点开始遍历所有节点。对于给定的一列数据,按照原创 2020-09-25 22:22:15 · 127 阅读 · 0 评论 -
数据结构实验之链表七:单链表中重复元素的删除
Description按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。Input第一行输入元素个数 n (1 <= n <= 15);第二行输入 n 个整数,保证在 int 范围内。Output第一行输出初始链表元素个数;第二行输出按照逆位序所建立的初始链表;第三行输出删除重复元素后的单链表元素个数;第四行输出删除重复元素后的单链表。SampleInput1021 30 14 55 32 63 11 30原创 2020-09-25 16:52:53 · 439 阅读 · 0 评论 -
数据结构实验之链表六:有序链表的建立
Description输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。Input第一行输入整数个数N;第二行输入N个无序的整数。Output依次输出有序链表的结点值。SampleInput633 6 22 9 44 5Output5 6 9 22 33 44Hint不得使用数组!#include<bits/stdc++.h>using namespace std;typedef struct node{ int原创 2020-09-25 16:31:41 · 154 阅读 · 0 评论 -
数据结构实验之链表五:单链表的拆分
Description输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。Input第一行输入整数N;;第二行依次输入N个整数。Output第一行分别输出偶数链表与奇数链表的元素个数;第二行依次输出偶数子链表的所有数据;第三行依次输出奇数子链表的所有数据。SampleInput101 3 22 8 15 999 9 44 6 1001Output4 622 8 44 6原创 2020-09-25 16:20:24 · 177 阅读 · 0 评论 -
数据结构实验之链表四:有序链表的归并
Description分别输入两个有序的整数序列(分别包含M和N个数据),建立两个有序的单链表,将这两个有序单链表合并成为一个大的有序单链表,并依次输出合并后的单链表数据。Input第一行输入M与N的值;第二行依次输入M个有序的整数;第三行依次输入N个有序的整数。Output输出合并后的单链表所包含的M+N个有序的整数。SampleInput6 51 23 26 45 66 9914 21 28 50 100Output1 14 21 23 26 28 45 50 66 99 1原创 2020-09-25 15:42:33 · 178 阅读 · 0 评论 -
数据结构实验之链表三:链表的逆置
Description输入多个整数,以-1作为结束标志,顺序建立一个带头结点的单链表,之后对该单链表的数据进行逆置,并输出逆置后的单链表数据。Input输入多个整数,以-1作为结束标志。Output输出逆置后的单链表数据。SampleInput12 56 4 6 55 15 33 62 -1Output62 33 15 55 6 4 56 12Hint不得使用数组。#include<bits/stdc++.h>using namespace std;typede原创 2020-09-25 15:15:07 · 160 阅读 · 0 评论 -
数据结构实验之链表二:逆序建立链表
Description输入整数个数N,再输入N个整数,按照这些整数输入的相反顺序建立单链表,并依次遍历输出单链表的数据。Input第一行输入整数N;;第二行依次输入N个整数,逆序建立单链表。Output依次输出单链表所存放的数据。SampleInput1011 3 5 27 9 12 43 16 84 22Output22 84 16 43 12 9 27 5 3 11Hint不能使用数组!#include<bits/stdc++.h>using namespa原创 2020-09-25 14:49:28 · 137 阅读 · 0 评论 -
数据结构实验之链表一:顺序建立链表
Description输入N个整数,按照输入的顺序建立单链表存储,并遍历所建立的单链表,输出这些数据。Input第一行输入整数的个数N;第二行依次输入每个整数。Output输出这组整数。SampleInput812 56 4 6 55 15 33 62Output12 56 4 6 55 15 33 62Hint不得使用数组!#include<bits/stdc++.h>using namespace std;typedef struct node{原创 2020-09-25 14:32:53 · 239 阅读 · 0 评论