这题我的第一想法是用头插法,但实际上并不好做,因为每次都需要遍历最后一个。更简单的做法是将其连成环,找到相应的位置重新设头结点和尾结点。这过 有很多细节需要注意,比如K有可能是大于链表长度的,如何重新设置K等都要注意。 ListNode *rotateList(ListNode *head, int ...
分类:
其他好文 时间:
2016-05-19 15:04:19
阅读次数:
121
一般有两种常用的方法来建立单链表:头插法与尾插法。
(1)头插法:每次将新申请的节点插在头节点的后面;
简单来说,就是把新加进的元素放在表头后的第一个位置:
首先,让新节点的next指向头节点之后;然后,让表头的next指向新节点。
(2)尾插法:每次将新申请的节点插在终端节点的后面。#include
#include typedef struct n...
分类:
编程语言 时间:
2016-05-12 21:10:43
阅读次数:
215
头文件://1.用《负载因子》来减少哈希冲突**//2.用开辟《素数》个空间来减少哈希冲突**//3.用《线性探测》·《二次探测》·《string的特殊算法》来减少哈希冲突**//4.防止《数据冗余》//5.用头插法插入节点》》》》》》为什么?//6.用《伪函数》实现功能模块的复用还有《模板..
分类:
其他好文 时间:
2016-04-10 19:35:01
阅读次数:
325
#include<stdio.h>#include<stdlib.h>typedef int DataType ;typedef struct LNode{ DataType data; LNode *next;}LNode;void qingxuanze(){ printf("1头插法,2尾插法, ...
分类:
其他好文 时间:
2016-03-30 20:58:09
阅读次数:
188
单链表的整表创建 声明一结点p和计数器变量i 初始化一空链表L 让L的头结点的指针指向NULL,即建立一个带头结点的单链表 循环实现后继结点的赋值和插入 头插法:从一个空表开始,生成新节点,读取数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到结束位置。简单来说就是把新加进的元素放
分类:
编程语言 时间:
2016-03-08 12:00:17
阅读次数:
135
在实际使用中,双链表比单链表方便很多,也更为灵活。对于不带头结点的非循环双链表的基本操作,我在《C语言实现双向非循环链表(不带头结点)的基本操作》这篇文章中有详细的实现。今天我们就要用两种不同的方式头插法和尾插法来建立双链表。代码上传至 https://github.com/chenyufeng1991/HeadInsertAndTailInsertDoubleList 。核心代码如下://尾...
分类:
其他好文 时间:
2016-03-03 14:52:45
阅读次数:
160
相关文件 heap.h heap.c 第一次调用CreateHeap: 一个双向链表和单链表。 然后调用HeapAlloc,从堆对象的空闲块中找一块参数大小的空闲块,在不满足需求的前提下,会变成如下: 红线为双向链表,NEW表示的结点是新插入的结点,可以看出模型中不论双向还是单向都是用头插法插入链表
分类:
其他好文 时间:
2016-02-29 19:47:12
阅读次数:
171
我在前面几篇博客中《C语言实现链表节点的插入》《C语言实现链表节点的删除》《C实现头插法和尾插法来构建链表》《C语言实现链表的基本操作》实现了链表的很多增删改查操作。这里我们要来实现链表的逆序打印,使用C来实现。代码上传至 https://github.com/chenyufeng1991/ReverseLinkedList 。 基本算法是:(1)使用尾插法构建原链表;(2)依次遍历原...
分类:
编程语言 时间:
2016-02-26 14:19:58
阅读次数:
315
链表的构建其实也就是不断插入节点的过程。而节点的插入可以分为头插法和尾插法。头插法就是在头结点后插入该节点,始终把该节点作为第一个节点。尾插法就是在链表的最后一个节点处插入元素,作为最后一个节点。如果想要了解链表的概念和其他链表操作,请参考《数据结构与算法之链表》《C语言实现链表的基本操作》两篇文章。示例代码上传至 https://github.com/chenyufeng1991/HeadIn...
分类:
其他好文 时间:
2016-02-25 13:55:51
阅读次数:
175
链表的分类:(1)单链表头插法:只需要维护一个头结点即可,常用来模拟堆栈;尾插法:需要维护头结点和尾结点,常用来模拟队列。(2)双向链表双向遍历,可以用来保存网页的历史记录等;(3)循环链表经常出现在面试题中,判断链表是否有环。链表的删除方式一:维护两个指针,current(表示当前节点)和previous(表示当前节点的前一个节点)。当current遍历到要删除的元素时,执行previous->...
分类:
编程语言 时间:
2016-02-24 09:40:15
阅读次数:
222