List
文章平均质量分 85
youngyoungla
alway be young
展开
-
输入一个链表的头结点,从尾到头反过来打印每个节点的值。
第一种:先逆转链表,再依次访问。(1)摘节点,改变原有链表结构(2)申请空间#include #include typedef int Datatype; typedef struct Listnode { Datatype _data; struct Listnode* _next; }Listnode; Listnode* Buynode() { Listnode* tmp=(Listn原创 2016-06-12 12:47:41 · 327 阅读 · 0 评论 -
在O(1)时间删除链表节点
思路:时间复杂度要求为O(1),已知要删除的节点,可以找到该节点的下一个节点,把下一个节点的相关信息复制到要删除的节点上,删除下一个节点,可以达到题目要求。注意:删除尾节点时需要遍历一遍,删除头结点时,需要把头结点移到下一个节点。#include #include #include struct Listnode { int _value; Listnode* _next; }; void原创 2016-06-12 12:48:05 · 311 阅读 · 0 评论 -
在链表中找出倒数第K个节点
(1)遍历两遍,第一次计算出链表长度n,第二次找到(n-k)个节点,也就是倒数第K个节点。(2)遍历一遍,定义两个指针,一个指针fast,一个指针slow,都指向头结点,fast指针先向前走K,然后再同时遍历,当fast遍历到最后一个节点时,slow所指向的节点就是倒数第K个节点。#include #include #include struct Listnode { int _val原创 2016-06-12 12:48:25 · 366 阅读 · 0 评论 -
链表的反转
从头开始摘节点,依次连起来。#include #include #include struct Listnode { int _value; Listnode* _next; }; void Init(Listnode*& head) { Listnode* cur =head; if(cur==NULL) { cur=(Listnode原创 2016-06-12 12:48:28 · 273 阅读 · 0 评论 -
合并两个有序的链表
#include #include #include struct Listnode { int _value; Listnode* _next; }; void Init(Listnode*& head) { Listnode* cur =head; if(cur==NULL) { cur=(Listnode*)malloc(sizeo原创 2016-06-12 12:48:31 · 212 阅读 · 0 评论 -
单链表带环问题
1.判断单链表是否有环 使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如果存在环,则指针slow、fast会相遇;如果不存在环,指针fast遇到NULL退出。 就是所谓的追击相遇问题: 2.求有环单链表的环长 在环上相遇后,记录第一次相遇点为Pos,之后指针slow继续每次走1步,fast每转载 2016-10-06 18:35:03 · 287 阅读 · 0 评论