以下内容基于jdk1.7.0_79源码; 基于哈希表的一个Map接口实现,存储的对象是一个键值对对象(Entry<K,V>); 基于数组和链表实现,内部维护着一个数组table,该数组保存着每个链表的表头结点;查找时,先通过hash函数计算hash值,再根据hash值计算数组索引,然后根据索引找到链
分类:
其他好文 时间:
2016-03-23 13:01:30
阅读次数:
181
单链表的结构有多种这里介绍的链表有头结点、有尾节点并且尾节点指向头结点#include<iostream>
usingnamespacestd;
#include<assert.h>
typedefintDataType;
structLinkNode
{
friendclassSList;//将SList设为友元,便于SList类可以访问节点类的私有成员
public..
分类:
编程语言 时间:
2016-03-20 02:20:11
阅读次数:
270
记忆精简:不带头结点,需要创建n个结点,包括三个指针,头指针head,一个游标指针p和创建结点的s....
分类:
其他好文 时间:
2016-03-15 06:21:07
阅读次数:
189
【题目要求直接翻转链表,而非申请新的空间】 这道题的一个关键在于,当m=1时,需要翻转的链表段前没有其他的结点(leetcode的测试用例不含头结点),这个特例给解题带来了一点小小的困难。一个比较直观、比较方便的想法是在链表中插入一个头结点,这样处理起来方便很多。除此之外,还要注意各种循环边界条件的
分类:
其他好文 时间:
2016-03-10 23:44:03
阅读次数:
367
单链表的整表创建 声明一结点p和计数器变量i 初始化一空链表L 让L的头结点的指针指向NULL,即建立一个带头结点的单链表 循环实现后继结点的赋值和插入 头插法:从一个空表开始,生成新节点,读取数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到结束位置。简单来说就是把新加进的元素放
分类:
编程语言 时间:
2016-03-08 12:00:17
阅读次数:
135
题目一: 给定链表的头结点,实现删除链表中间节点的函数。 思路: 基本解法: 先遍历一遍链表,计算出链表节点的个数。然后计算出中间节点的位置,再次遍历链表,找到中间节点的前一个位置,进行删除操作。 但是也可以只遍历一次就完成上述操作: 链表的长度 中间节点 的位置 1 1 2 1 3 2 4 2 5...
分类:
编程语言 时间:
2016-03-07 13:38:00
阅读次数:
179
使用静态内部类充当单链表 1 package db; 2 3 /** 4 * 只有头结点实现栈 5 * 6 * @author fightzhao 7 * 8 */ 9 public class Stack<E> { 10 /* 11 * 有以下方法 入栈 push(E x) 出栈pop() 栈顶元
分类:
其他好文 时间:
2016-03-04 20:40:51
阅读次数:
191
对于双向链表,个人推荐使用带头结点尾结点的方式来处理会比较方便。我在《C语言实现双向非循环链表(不带头结点)的节点插入》中详细实现了在不带头结点的情况下的插入。这次我们将会来在使用头结点尾结点的情况下在任意的位置插入元素。代码上传至 https://github.com/chenyufeng1991/InsertNodeDoubleLinkedList_HeadNode 。核心代码如下://插入一...
分类:
编程语言 时间:
2016-03-04 16:30:20
阅读次数:
210
我在之前一篇博客《C语言实现非循环双链表节点的删除(不带头结点)》中详细讲解了不含头尾节点的双链表中删除一个节点,处理过程还是稍显麻烦。自从我们学习使用头尾节点来处理双链表后,删除过程就非常方便。代码上传至 https://github.com/chenyufeng1991/DeleteNodeDoubleLinkedList_HeadList 。核心代码如下://删除pos位置的节点
int D...
分类:
编程语言 时间:
2016-03-04 14:37:14
阅读次数:
141