第一次理解链表和节点 节点俩基本属性:节点数据、指向下一个节点的指针pNext。 链表俩基本属性:链表头指针、节点数。 链表之所以能像一条线一样连接各个节点,关键就pNext指针,链表只是一个逻辑产物罢了。 那么问题来了,节点类有个指向下一个节点的指针,下一个节点还没产生怎么指向。所以先有下一个节点 ...
分类:
编程语言 时间:
2016-10-01 16:53:11
阅读次数:
187
Minimum Size Subarray Sum** Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s ...
分类:
其他好文 时间:
2016-09-23 13:04:54
阅读次数:
119
说明:本文仅供学习交流,转载请标明出处,欢迎转载! 题目:已知有两个有序的单链表,其头指针分别为head1和head2,实现将这两个链表合并的函数: Node* ListMerge(Node *head1,Node *head2) 这个算法很像我们排序算法中的归并排序,只能说“很像”,因为思想是一样 ...
分类:
编程语言 时间:
2016-09-06 21:09:43
阅读次数:
178
链表概述 链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head ...
分类:
编程语言 时间:
2016-09-03 16:18:35
阅读次数:
195
1 双向链表详解和实现 1.1 双向链表详解 双(向)链表中有两条方向不同的链,即每个结点中除next域存放后继结点地址外,还增加一个指向其直接前趋的指针域prior。双向链表在查找时更方便 特别是大量数据的遍历。 注意: ①双链表由头指针head惟一确定的。 ②带头结点的双链表的某些运算变得方便。 ...
分类:
编程语言 时间:
2016-09-02 23:28:46
阅读次数:
186
这道算法题同样是剑指Offer中的一道题,题目描述为:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。其实我们知道,想要在单向链表中找到某个节点并删除它,复杂度为O(n),因为必须从头遍历才能找到它(最重要的是因为要找到它的前一个节点。)所以想要O(1)完成,必须想其他的方法。 目前重要的一个信息就是已经有一个节点指针指向当前要删除的节点。这就比较好办了。我们...
分类:
编程语言 时间:
2016-08-21 14:02:25
阅读次数:
197
为什么Disruptor不使用队列来实现RingBuffer 队列有两个指针,一个指向队头,一个指向队尾。如果有超过一个生产者想要往队列里放东西,尾指针就将成为一个冲突点,因为有多个线程要更新它。如果有多个消费者,那么头指针就会产生竞争,因为元素被消费之后,需要更新指针,所以不仅有读操作还有写操作了 ...
分类:
其他好文 时间:
2016-08-19 13:16:54
阅读次数:
124
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点,链表节点定义如下: 解析:注意的问题1、输入链表的头指针为NULL或者整个链表只有一个节点时,程序会崩溃;2、输入的链表只有一个节点;3、反转后链表出现断裂;4、对链表指针的操作顺序 ...
分类:
其他好文 时间:
2016-08-17 18:07:49
阅读次数:
157
题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1),时间删除该节点。链表节点与函数的定义如下: struct ListNode{ int m_nValue; ListNode* m_pNext; } void DeleteNode(ListNode** pListHead,ListNo ...
分类:
其他好文 时间:
2016-08-17 15:30:37
阅读次数:
102
头指针:是必须的(头指针标识了这个链表 LinkList *L L就是头指针) 头结点:不是必须的(没有头结点时,头指针指向第一个数据元素的位置) ...
分类:
其他好文 时间:
2016-08-15 20:48:32
阅读次数:
116