给定一个常数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个结点的地址、 ...
分类:
其他好文 时间:
2017-12-05 11:53:03
阅读次数:
154
原创文章,拒绝转载 主要的思想是使用三个标记指针:preNode、curNode、nextNode,每次将curNode的next设为preNode,然后如果此时nextNode为空,跳出循环,将链表头指针的next设为NULL,返回链表尾指针;否则,preNode = curNode,curNod ...
分类:
编程语言 时间:
2017-11-18 21:00:41
阅读次数:
193
水题,可以立刻想到的方法是 1.从头到尾遍历,依次入栈,然后出栈。时间复杂度和空间复杂度都是O(n) 2.先反转链表,然后遍历。时间复杂度O(n),空间O(1) 3.先放到数组,再倒序存一遍,和方法1思想相同,也是最蠢的方法。 其他方法自己想吧... 最蠢的我贴出最蠢的代码- - /** * str ...
分类:
其他好文 时间:
2017-10-13 12:25:44
阅读次数:
135
一、题目 输入一个链表,反转链表后,输出链表的所有元素。 二、思路 详细分析见代码注释 三、代码 public class Solution { public ListNode ReverseList(ListNode head) { if(head==null) return null; //he ...
分类:
其他好文 时间:
2017-10-01 18:37:40
阅读次数:
204
题目: 输入一个链表,反转链表后,输出链表的所有元素。 思路: 反转链表,对于片段 1 >2 >3循环操作; 要反转链表需要两步: 一,将2->next指向1 (如果不保存3那么此时就丢失了对3的引用) 二,将链表往后移 即 : 1=2; 2=3;3=3->next 注意的点: 一,首节点的next ...
分类:
其他好文 时间:
2017-09-13 18:25:43
阅读次数:
122
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 代码: 1 #include<stdio.h> 2 #include"malloc.h" 3 typedef struct node 4 { 5 struct node *next; 6 int data; 7 }*Li ...
分类:
其他好文 时间:
2017-08-18 22:31:14
阅读次数:
102
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(List... ...
分类:
其他好文 时间:
2017-08-06 17:59:42
阅读次数:
121
题目描述 输入一个链表,反转链表后,输出链表的所有元素 输入一个链表,反转链表后,输出链表的所有元素 下面这思路居然 溢出,超时!!! http://blog.csdn.net/feliciafay/article/details/6841115 http://blog.csdn.net/hyqso ...
分类:
其他好文 时间:
2017-08-05 20:34:10
阅读次数:
109
错误代码 此代码会报“段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起” 如果链表只有一个节点,那p2就是空指针,p3就是空指针的下一个指针,但空指针是没有next的 正确代码 ...
分类:
其他好文 时间:
2017-07-11 11:19:32
阅读次数:
110
链表常用操作——反转 我们先来定义一个单链表的节点类 实现单链表反转共有两种方法 1、使用递归,从后往前反转。从头结点开始,往后查找直到找到尾节点为止,然后开始反转。 2、使用遍历,从前往后反转。先保存下个节点,然后将将当前节点指向前个节点,然后在将节点向下移动继续循环进行下次反转。 刚做完在线编程 ...
分类:
其他好文 时间:
2017-07-05 15:53:53
阅读次数:
202