Description
我们定义素数链表为元素全部是素数的链表。

给定一个初始含有 n 个元素的链表,并给出 q 次删除操作,对于每次操作,你需要判断链表中指定位置上的元素,如果元素存在且不是素数则删除。

在所有操作完成后你还需要检查一下最终链表是否是一个素数链表。

Input
输入数据有多组。第 1 行输入 1 个整数 T (1 <= T <= 25) 表示数据组数。

对于每组数据:

第 1 行输入 2 个整数 n (1 <= n <= 50000), q (1 <= q <= 1000) 表示链表初始元素数量和操作次数
第 2 行输入 n 个用空格隔开的整数(范围 [0, 1000])表示初始链表
接下来 q 行,每行输入 1 个整数 i (1 <= i <= 50000),表示试图删除链表中第 i 个元素
Output
对于每组数据:

先输出 1 行 “#c”,其中 c 表示当前是第几组数据
对于每次删除操作,根据情况输出 1 行:
如果要删除的位置不存在元素(位置超出链表长度),则输出 “Invalid Operation”
如果要删除的位置存在元素且此位置的元素是非素数,则删除元素并输出 “Deleted x”,其中 x 为成功删除的数(必须为非素数才能删除)
如果要删除的位置存在元素且此位置的元素是素数,则输出 “Failed to delete x”,其中 x 为此位置上的数
删除操作全部进行完毕后,则还需判断该链表现在是否为一个素数链表。如果链表非空且是素数链表,则输出 “All Completed. It’s a Prime Linked List”,否则输出 “All Completed. It’s not a Prime Linked List”
所有输出均不包括引号。

Sample
Input
2
1 2
0
5
1
6 3
1 2 3 3 4 5
1
1
4
Output
#1
Invalid Operation
Deleted 0
All Completed. It’s not a Prime Linked List
#2
Deleted 1
Failed to delete 2
Deleted 4
All Completed. It’s a Prime Linked List
Hint
推荐直接复制粘贴输出语句字符串到你的代码中,以防手打敲错。

链表中第 1 个元素的位置为 1,第 2 个元素的位置为 2,以此类推。

/*
这道题题不难,就是基本操作整合到一起,显得难,你只要把这道题分块去解决,在注意一下小细节,很容易就A掉。
*/
#include<bits/stdc++.h>using namespace std;typedef struct node
{int data;struct node *next;
} List;
int length;List *creat(int n)
{List *head, *tail, *p;head = new List;head->next = NULL;tail = head;for(int i = 0; i < n; i++){p = new List;scanf("%d", &p->data);p->next = NULL;tail->next = p;tail = p;}return head;length = n;
}
int isprim(int a)//判断素数
{int flag = 1;if(a == 0 || a == 1){flag = 0;}else{for(int i = 2; i <= sqrt(a); i++){if(a % i == 0){flag = 0;break;}}}return flag;
}void List_del(List *head, int k)//删除操作
{List *p, *q;int i;if(k > length)printf("Invalid Operation\n");else{p = head;for(i = 1; i < k; i++){p = p->next;}q = p->next;if(isprim(q->data) == 1)printf("Failed to delete %d\n", q->data);else{printf("Deleted %d\n", q->data);length--;p->next = q->next;free(q);}}
}void display(List *head)
{if(length == 0)//这里是最容易遗忘的地方,我找了一会才发现!!{printf("All Completed. It's not a Prime Linked List\n");return ;}List *p;int flag = 1;p = head->next;while(p){if(isprim(p->data) == 0){flag = 0;break;}p = p->next;}if(flag == 0)printf("All Completed. It's not a Prime Linked List\n");elseprintf("All Completed. It's a Prime Linked List\n");
}
int main()
{int T, n, q, k;List *head;while(scanf("%d", &T) != EOF){for(int i = 1; i <= T; i++){printf("#%d\n", i);scanf("%d%d", &n, &q);length = n;head = creat(n);while(q--){scanf("%d", &k);List_del(head, k);}display(head);}}return 0;
}

sdutoj-3837-素数链表相关推荐

  1. c语言间接级别不同_一个超复杂的间接递归——C语言初学者代码中的常见错误与瑕疵(6)...

    问题: 在该文的最后,曾提到完成的代码还有进一步改进的余地.本文完成了这个改进.所以本文讨论的并不是初学者代码中的常见错误与瑕疵,而是对我自己代码的改进和优化.标题只是为了保持系列的连续性. 改进 程 ...

  2. PTA 电话聊天狂人 思路分析及代码解析

    PTA 电话聊天狂人 思路分析及代码解析v1.0 一.前导 1. 需要掌握的知识 2. 题目信息 二.解题思路分析 1. 题意理解 1. 1 输入数据 1.2 输出数据 2. 思路分析 三.具体实现 ...

  3. 首届英才在线编程大赛-编程题回顾-java实现

    参见了中华英才网的编程大赛,算法题很简单,但还是做的不熟,一道用BigInteger的没有AC 下面是三道题的题目和程序 问题1:求小于n的自然数中,17或者18的倍数和 java 有一点需要注意的是 ...

  4. C语言从链表中删除素数,Data Structures 之 链表

    链表(Linked List),由一系列不必在内存中相连的结构组成. 按C的约定,函数的声明都在头文件中,具体的Node声明在.c文件中. adt.h //按照C 的约定,作为类型的List表和Pos ...

  5. SDUTOJ 2178 - 链表的有序集合

    Problem Description 集合有一个重要的特性:互异性,即集合中任意两个元素都是不同的,互异性使得集合中的元素没有重复.给你 n 个包含重复数字的无序正整数序列,建立一个有序链表,链表中 ...

  6. 如何检测链表中的循环?

    假设您在Java中有一个链表结构. 它由节点组成: class Node {Node next;// some user data } 每个节点都指向下一个节点,但最后一个节点除外,后者的下一个为空. ...

  7. 双向链表_如何通过Java单次查找链表的中间元素

    双向链表 您如何一次找到LinkedList的中间元素是一个编程问题,在电话采访中经常被问到Java和非Java程序员. 这个问题类似于检查回文或计算阶乘,有时Interviewer还会要求编写代码. ...

  8. 无暇素数c语言百度,华为招聘--前人经验(转贴)

    这篇文章是写给2007届的毕业生的,我想我这些日子的经历应该能给2007届的师弟和师妹们将来的校园招聘提供点帮助. 一.准备阶段: 在华为面试之前,我把<软件设计师教程>大概的复习了一遍, ...

  9. 面试官本拿求素数搞我,但被我优雅的“回击“了(素数筛)

    原创公众号(希望能支持一下):bigsai 转载请联系bigsai 文章收录在github 求star 前言 现在的面试官,是无数开发者的梦魇,能够吊打面试官的属实不多,因为大部分面试官真的有那么那几 ...

最新文章

  1. 【深度学习】卷积神经网络速成
  2. Android 利用addView 动态给Activity添加View组件
  3. 一台微型计算机必须具备的设备,计算机应用基础复习题(含答案)1、填空题一台微型计算机必须具备的.doc...
  4. [妙味Ajax]第一课:原理和封装
  5. win7右键没有新建文件夹了
  6. iWebOffice一些相关
  7. Photoshop CC 2020软件安装教程
  8. 设置计算机网络密码怎么设置路由器,tplink路由器电脑怎么设置密码?
  9. 一篇彻底搞懂-->shell脚本
  10. 解决MacBook Pro Touch ID失灵不起作用的方法
  11. 免费内网穿透远程访问家里的监控
  12. 基于深度强化学习的车道线检测和定位(Deep reinforcement learning based lane detection and localization) 论文解读+代码复现
  13. MySQL数据库实验五 触发器和存储过程
  14. 软件测试质量标准的指标,关于测试设计的基本原则和用例的质量标准
  15. Race Condition 引起的 HashMap CPU100%
  16. ERP不规范,同事两行泪
  17. ST-DBSCAN算法简述及其python实现
  18. linux 查看主机的公网ip
  19. python开发者如何搭建自己的开发环境(Windows)
  20. QQ+微信+支付宝收款一码付这么神奇,如何自己制作收款二维码

热门文章

  1. 使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践--转载
  2. spring beans源码解读之--XmlBeanFactory
  3. FastJson解析对象及对象数组--项目经验
  4. android .so文件详解以及兼容性
  5. Python数据结构与算法(第七天)
  6. No module named keras.engine.base_layer
  7. Node.js Web 模块
  8. 与张小龙同行:微信小程序开发
  9. 经验传承:谈色彩设计方法
  10. Java Review - LinkedHashMap LinkedHashSet 源码解读