最近我在做一个项目,其中要用到一个数据结构——Hash Table(哈希表),以前只有理论知识,现在实却发现很不简单,所以写下来和大家共分享。 我们知道,哈希表是一个固定大小的数组,数组的每个元素是一个链表(单向或双向)的头指针。如果Key一样,则在一起,如果Key不一样,则不在一起。哈希表的查询是 ...
分类:
其他好文 时间:
2018-03-03 23:28:45
阅读次数:
219
下图展示了单链表的基本结构: head指针是链表的头指针,指向第一个节点,每个节点的next指针域指向下一个节点,最后一个节点的next指针域为NULL,在图中用0表示。 下面先来看程序(栈的链式存储实现,另外一个实现点这里)和对应的输出(注意输出前进行了链表反转(见《单链表反转》,否则程序后面的w ...
分类:
其他好文 时间:
2018-02-26 11:23:21
阅读次数:
226
顺序表是数据结构中最基本也是应用相当广泛的一种数据结构类型。它通常包含三个私有成分,即指向数据数组的头指针、当前表长以及表的实际容量。表的头指针通常指向数据数组的基地址,通过数组的形式进行访问数据数组中的每个元素。其基本结构类型如下图所示: 从上图可以看到,其基本结构包含一个指向数据数组的头指针,当 ...
分类:
编程语言 时间:
2018-02-21 15:52:57
阅读次数:
168
1.队列:和栈中的情况不同,队列中的数据项不总是从数组下标0开始,移除一个数据项后,队头指针会指向下标较高的数据项,其特点:先入先出 2.图解 3.队列的实现代码: 3.1.Queue.java 3.2.QueueTest.java 4.队列插入和删除的时间复杂度和栈的一样,都是O(1) 5.优先级 ...
分类:
编程语言 时间:
2018-02-12 20:05:08
阅读次数:
149
#include "student.h" CStu::CStu() { //链表头指针 m_pHead = NULL; //链表尾指针 m_pEnd = NULL; m_stuCount = 0; } CStu::~CStu() { while (m_pHead) { Student* pTemp ... ...
分类:
编程语言 时间:
2018-01-21 17:39:35
阅读次数:
176
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路:这题首先熟悉哨兵节点的用法。自己对模板还是没有很好的节点。 //哨兵节点 ListNode dummyNode ...
分类:
其他好文 时间:
2018-01-17 15:58:53
阅读次数:
102
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1→2->5 没审题,写成了链表去重 1->2->3->3->4->4->5 处理后为 1→2→3——4 5 为了保证删除之后的链表 ...
分类:
其他好文 时间:
2018-01-11 20:34:27
阅读次数:
204
[抄题]: 给你一个链表以及一个k,将这个链表从头指针开始每k个翻转一下。链表元素个数不是k的倍数,最后剩余的不用翻转。 [思维问题]: [一句话思路]: // reverse head->n1->..->nk->next.. // to head->nk->..->n1->next.. // re ...
分类:
其他好文 时间:
2018-01-07 00:46:52
阅读次数:
127
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路:两个指针一前一后,遍历找重复节点,特殊情况考虑重复的节点是头节点 class Solution { publi ...
分类:
其他好文 时间:
2017-12-22 13:27:32
阅读次数:
121
题目描述:把k个排序的链表组成的列表合并成一个排序的链表 思路: 1. 使用堆排序,遍历列表,把每个列表中链表的头指针的值和头指针本身作为一个元素放在堆中; 2. 第一步中遍历完列表后,此时堆中最多会有n个元素,n是列表的长度; 3. 当堆不为空,取出堆中的最小值,然后把该值的指针指向下一个元素,并 ...
分类:
编程语言 时间:
2017-12-22 00:37:47
阅读次数:
133