PAT 乙级-1025 链表反转】的更多相关文章

给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转.例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4:如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转. 输入格式: 每个输入包含1个测试用例.每个测试用例第1行给出第1个结点的地址.结点总个数正整数N(<= 105).以及正整数K(<=N),即要求反转的子链结点的个数.结点的地址是5位非负整数,NULL地址用-1表示. 接下来有N行,每行格式为:    Address Data…
题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805296180871168 题解 第一遍没有全部AC,最后1个测试点没过,原因是题目给的结点中有可能有无效结点,所以需要重新统计节点个数.(参考链接:https://blog.csdn.net/m0_37285185/article/details/68936043) 修改后全部都AC了. 整体的思路是以地址为键形成一个map,根据从第一个结点开始遍历,统计出…
1025. 反转链表 (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转.例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4:如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转. 输入格式: 每个输入包含1个测试用例.每个测试用例第1行给出第1个结点的地址.结点总个数正整数N(<= 105)…
转跳点:…
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上下结点"位置" 按照规律遍历一遍链表并反转链表 输出整条反转完的链表 #include <iostream> #include <cstdio> using namespace std; int nextnum[100010],value[100010]; stru…
PAT链表专题 关于PAT甲级的链表问题,主要内容 就是"建立链表" 所以第一步学会模拟链表,pat又不卡时间,这里用vector + 结构体,更简洁 模拟链表的普遍代码 const int maxn = 1e6+10; struct node{ int address; int next; char key; }nod[maxn]; int head1,n; vector<node> list1; cin>>head1>>n; for(int i=…
最近准备结束自己的科研生涯,准备要开始找工作了,准备在LEETCODE刷刷题...刷的前40题全部用python刷的,各种调包速度奇快,后被师哥告知这样没意义,于是准备开始回归C++,Python用的多了再用C++总是忘记敲分号和括号,甚至Compile Error了几次 = =.尴尬 链表反转比较简单,首先用自己的"本科"方法做了一下,发现效率并不高: class Solution { public: ListNode* reverseList(ListNode* head) { L…
链表反转是链表相关问题最基础的知识,做完LeetCode中LinkedList后才会有这种体会,因为ACM算法中不会涉及这一部分.解决这一问题有多种方法,在面试中面试官通常也会要求写出多种.包括stack,iterative,以及recursive. (1) stack: a. 按顺序将节点push到stack中,next赋为NULL: b. 从stack中取节点依次链接. 但是开了额外的空间,来不及多解释了,看下一个吧. (2) iterative: a. 创建根节点root; b. 依次将每…
一.简介 经查阅,主要有两种方法实现链表反转,递归反转法和遍历反转法: 递归: 在反转当前结点之前先反转其后边的结点,即.从尾结点开始逆向反转各个节点的指针域指向: 遍历:从前往后反转各个结点的指针域的指向. 二.实现 定义一个结点类: public class Node { private int data;  //数据域 private Node next;    //指针域    public Node(int data) {  super();  this.data = data; } …
单向链表反转,一道常见的面试题,动手实现下. #include "stdafx.h" #include <stdlib.h> struct Node{ int data; Node* next; }; void print1(Node *head) { Node *p; p=head; if(head!= NULL) do { printf("%d \n", p->data); p=p->next; }while(p!=NULL); } No…