1、单向链接
单向链表适用于只从一端单向访问的场合,这种场合一般来说:
(1)、删除时,只适合删除第一个元素;
(2)、添加时,只直接添加到最后一个元素的后面或者添加到第一个元素的前面;
(3)、属于单向迭代器,只能从一个方向走到头(只支持前进或后退,取决于实现),查找效率极差。不适合大量查询的场合。
这种典型的应用场合是各类缓冲池和栈的实现。
2、双向链表
...
分类:
其他好文 时间:
2016-05-07 10:02:40
阅读次数:
141
1. 前言能用图说清楚的,就坚决不用代码。能用代码撸清楚的,就坚决不写解释(不是不写注释哦)。2. 数据结构HashMap内部通过维护一个Entry数组(变量为table),来实现其基本功能,而Entry是HashMap的内部类,其主要作用便是存储键值对,其数据结构大致如下图所示。从Entry的数据结构可以看出,多个Entry是可以形成一个单向链表的,HashMap中维护的E...
分类:
编程语言 时间:
2016-05-06 15:26:33
阅读次数:
185
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。链表结点与函数的定义如下:
typedef struct ListNode
{
int val;
struct ListNode *p_next;
}NODE, *PNODE;
void delete_node(PNODE *pListHead, PNODE pToDeleted);
一般来说,我们拿到一个删...
分类:
其他好文 时间:
2016-05-06 12:13:26
阅读次数:
133
题目:输入两个链表,找出它们的第一个公共结点。 思路:如果两个链表有公共节点,因为是两个单向链表,所以应该是Y型的,从后向前找找到一个不相同的后一个节点就是第一个公共节点。可是使用两个辅助栈。 实现代码: ...
分类:
其他好文 时间:
2016-05-05 00:39:43
阅读次数:
127
给定程序中,函数fun的功能是将带头结点的单向链表逆置,即若原链表中从头至尾结点数据与依次为2、4、6、8、10,逆置后,从头至尾结点数据依次为10、8、6、4、2。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 试题程序。 答案: 你的答案 (正确) 1 next 2 N ...
分类:
其他好文 时间:
2016-05-02 21:11:06
阅读次数:
164
c语言实现 #include <stdio.h> #include <malloc.h> typedef struct node{ int data; struct node*next; } ElemSN; ElemSN*createLink (int*a,int n) { int i; ElemS ...
分类:
其他好文 时间:
2016-05-01 14:46:17
阅读次数:
147
HashMap的存储结构,如下图所示:
紫色部分即代表哈希表,也称为哈希数组,数组的每个元素都是一个单链表的头节点,链表是用来解决冲突的,如果不同的key映射到了数组的同一位置处,就将其放入单链表中。
1、首先看链表中节点的数据结构:
// Entry是单向链表。 (1.7以前)
// 它是 “HashMap链式存储法”对应的链表。
// 它实现了Map.Entry...
分类:
其他好文 时间:
2016-04-29 16:40:18
阅读次数:
314
单向链表的创建、输出、删除、 插入的代码以及分析 一、 链表的创建 结构体 用*next指向下一个结构体的地址来连接链表,注意最后一个要指向NULL(即空指针) >[p1] >[p2]... >[pn] >[NULL] head p1->next p2->next pn->next 二、链表的输出 ...
分类:
其他好文 时间:
2016-04-28 21:21:09
阅读次数:
221
上一篇博客主要总结了单向链表,这次再总结一下双向链表. 1.概念 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。 结构图如下所示: 2.基本操作 ...
分类:
编程语言 时间:
2016-04-27 09:26:52
阅读次数:
193
本来就对c中的链表不熟悉,做leetcode第二题直接看蒙,链表可以通过 listcode.val 访问当前值,通过listcode.next 指向下一个值的地址(类型还是listcode) ...
分类:
编程语言 时间:
2016-04-25 21:03:46
阅读次数:
394