模拟单链表的增删操作

题目链接:https://www.patest.cn/contests/gplt/L2-002

题解

最开始我脑抽用map模拟单链表进行操作,因为这样可以节约空间,并且用了cincout进行输入输出,后来发现有些样例超时了。考虑到cincout在面对大量数据的时候会很慢,所以我就换成了scanfprintf进行输入输出,果然过的样例多了,但是还是不能通过全部样例。最后换成数组模拟单链表的操作,用空间换时间,最终AC

代码如下:

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 100000+10;
struct Node{
int nextad;
int key;
}nod[maxn];
int start_ad, n;
bool vis[10010]; void _output(int p) {
while(p != -1) {
printf("%05d %d ", p, nod[p].key);
if(-1 == nod[p].nextad) {
printf("-1\n");
}else {
printf("%05d\n", nod[p].nextad);
}
p = nod[p].nextad;
}
} int main() {
while(~scanf("%d%d", &start_ad, &n)) {
memset(vis, 0, sizeof(vis));
for(int i = 0; i < n; i++) {
int p,q,r;
scanf("%d%d%d", &p, &q, &r);
nod[p].key = q;
nod[p].nextad = r;
}
int pre = start_ad, next = start_ad;
int begin_ad = -1, pre2;
vis[abs(nod[start_ad].key)] = true;
for(int i = 1; i < n; i++) {
next = nod[pre].nextad;
if(vis[abs(nod[next].key)]) {
if(-1 == nod[next].nextad) {//删除最后一个节点
nod[pre].nextad = -1;
}else {
nod[pre].nextad = nod[next].nextad;
}
//刚删除的节点一定要将其后继地址赋值为-1
nod[next].nextad = -1;
if(-1 == begin_ad) {//第一次删除节点
begin_ad = next;
pre2 = begin_ad;
}else {
nod[pre2].nextad = next;
pre2 = next;
}
}else {
pre = next;
vis[abs(nod[pre].key)] = true;
}
}
_output(start_ad);
_output(begin_ad);
}
return 0;
}

PAT 天梯赛 L2-002 链表去重的更多相关文章

  1. PAT 天梯赛 L2-022. 重排链表 【数据结构】

    题目链接 https://www.patest.cn/contests/gplt/L2-022 思路 先用结构体 把每个结点信息保存下来 然后深搜一下 遍历一下整个链表 然后就重新排一下 但是要注意一 ...

  2. PAT天梯赛 L1-049 天梯赛座位分配

    题目链接:点击打开链接 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] ...

  3. PAT天梯赛L3-007 天梯地图

    题目链接:点击打开链接 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证对任意的查询请求,地图上都至 ...

  4. PAT天梯赛练习题——L3-007. 天梯地图(多边权SPFA)

    L3-007. 天梯地图 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校 ...

  5. PTA天梯赛L2

    L2-001 紧急救援 题意:就是给你一张n<500的图:让你求最短路径,最短路条数,以及路径: 做法,先用dijkstra求最短路,然后dfs找最短路条数,以及点权的最大值: 一般dfs不就可 ...

  6. PAT天梯赛 L2-002. 链表去重 【STL】

    题目链接 https://www.patest.cn/contests/gplt/L2-002 思路 用结构体 存储 一个结点的地址 值 和下一个地址 然后从首地址开始 往下走 并且每个值的绝对值 都 ...

  7. pat甲级 团体天梯赛 L2-022. 重排链表

    L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请 ...

  8. PAT 天梯赛练习集 L2-022. 重排链表

    题目链接:https://www.patest.cn/contests/gplt/L2-022 给定一个单链表 L1→L2→...→Ln-1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln-1→L ...

  9. GPLT天梯赛 L2-022. 重排链表

    L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请 ...

随机推荐

  1. ecshop后台管理显示扩展分类

    ecshop 后台商品列表默认只显示分类下的商品,而不显示扩展分类中的商品,以下是我个人给出的解决方法: 打开admin/includes/lib_goods.php 第839行左右的位置 可以看到如 ...

  2. jni中的参数含义

    #include <jni.h> JNIEXPORT jstring JNICALL Java_com_example_hellojni_MainActivity_helloFromC ( ...

  3. IE下单选按钮隐藏后点击对应label无法选中的bug解决

    项目中,有时候填写表单我们的选项会隐藏掉radio或者checkbox,而只显示给用户对应的文字选择,如果用户点击label选择时,在FF/Chrome等标准浏览器中隐藏掉的radio/checkbo ...

  4. ant 配置 和测试 1

    配置路径 D:\dba\change\UAT\unity\schema\test ----v0 版本 sql.xml   (默认target 是versionfinal ,也就是最终版本) --ver ...

  5. HDU 1022 Train Problem I 用栈瞎搞

    题目大意:有n辆火车,按一定的顺序进站(第一个字符串顺序),问是否能按规定的顺序出站(按第二个字符串的顺序出去),如果能输出每辆火车进出站的过程. 题目思路:栈的特点是先进后出,和题意类似,还有有一种 ...

  6. 青蛙的约会<数论,extgcd>

    青蛙的约会 题意: 在一个圆上有一个零刻度点,公青蛙和母青蛙分别在A点和B点<不同的位 置>,他们每秒行走的距离分别是m和n,圆的周长是L.问题是这两个青 蛙能不能相遇,若能在什么时候相遇 ...

  7. win8.1点击“更改电脑设置”无反应(闪退)

    系统:win8.1 专业版 症状:win键+C → 设置 → 更改电脑设置,无反应. 尝试办法: 1.SFC /scannow扫描修复,扫描出错误但无法修复.因为曾经为了节省空间,用DISM++清理了 ...

  8. haxe 嵌入swf 读取里面的内容

    首先安装 swf 库,运行命令: 命令提示符: haxelib install swf 在project.xml 加上 <!-- 导入swf类库 --> <haxelib name= ...

  9. 9个Console控制台命令(转载)

    一.显示信息的命令 <!DOCTYPE html> <html> <head> <title>常用console命令</title> < ...

  10. Using Sphinx to index CNS database

    1, look at the sphinx.person.address.conf to see how to configure the conf file2, index the database ...