本文借鉴优秀文章:http://blog.csdn.net/zhangerqing/article/details/8122075
数据结构:
下面的表格也许可以更直接的表现出他们之间的区别和联系:
接口
简述
实现
操作特性
成员要求
Set
...
分类:
编程语言 时间:
2015-01-29 09:37:03
阅读次数:
176
首先查看源码:Map经常运用到的源码
/**
* Returns a {@code Set} containing all of the mappings in this {@code Map}. Each mapping is
* an instance of {@link Map.Entry}. As the {@code Set} is backed by this...
分类:
编程语言 时间:
2015-01-21 18:16:46
阅读次数:
268
题目:输入带头结点的单链表L,输出该单链表中倒数第k个结点。单链表的倒数第0个结点为该单链表的尾指针。要求只能遍历一次单链表。
解题思路:
如果不要求只能遍历一次单链表,我们可以先遍历一次单链表,求出它的结点的总个数n(包括头结点),所以单链表的结点是从倒数第n-1个到倒数第0个,然后再遍历一次单链表,遍历时访问的第n-k-1个结点就是该单链表中倒数第k个结点。现在要求只能遍历...
分类:
编程语言 时间:
2015-01-17 18:10:44
阅读次数:
162
题目:删除带头结点的单链表中重复值的元素(即让每种值的元素只有一个)
解题思路:
用一个动态辅助存储数组,每次要向辅助数组中放入元素时,让辅助数组的长度加1,最长时与单链表一样长,设一个指针p,让它指向头结点,从单链表中第一个元素开始,将它的值放入辅助数组中,然后依次访问单链表后面的元素,用该元素的值与数组中所有已经被赋值的元素的值进行比较,如果不等于数组中任何元素的值,那么让p的...
分类:
编程语言 时间:
2015-01-17 11:20:26
阅读次数:
201
题目:删除带头结点的单链表L中的结点p,p不是最后一个结点,要求时间复杂度为O(1)。
解题思路:
如果不要求时间复杂度为O(1),我们可以找出p的前驱结点,然后很容易就删除p。
现在要求时间复杂度为O(1),因为p不是最后一个结点,知道结点p我们可以删除p的后继结点,那么我们可以把p的后继结点元素的值赋给p结点元素的值。
ADT定义:
//单链表的结点类
class LNo...
分类:
编程语言 时间:
2015-01-17 11:17:47
阅读次数:
285
题目:有一个线性表(a1,a2,a3,...,an),采用带头节点的单链表L存储,设计一个算法将其就地逆置,线性表变为(an,...a3,a2,a1)。所谓“就地”指辅助存储空间为O(1)。
解题思路:
如果是顺序存储的话,我们很容易想到解题思路,利用1个辅助变量让第1个元素与第n个元素交换,然后再利用这个辅助变量让第2个元素与第n-1个元素交换,...最后利用这个辅助变量让第...
分类:
编程语言 时间:
2015-01-16 16:48:44
阅读次数:
260
题目要求,输入一个整型数,输出反转后的数。例如:-123,反转后为-321。应该考虑到输入int型的数反转后超过int最大值的情况。
{CSDN:CODE:580055}...
分类:
其他好文 时间:
2015-01-14 22:57:23
阅读次数:
147
1 // LowArrayApp.java 2 // demonstrates array class with low-level interface 3 // to run this program: C>java LowArrayAPP 4 //java数据结构和算法(第二版)拉佛 著 ...
分类:
移动开发 时间:
2015-01-11 14:42:20
阅读次数:
247
1 // java 数据结构和算法第二版 拉佛 著 2 // 数组的操作 3 4 package first; 5 6 class HighArray { 7 private long[] a; 8 private int nElems; 9 10 public...
分类:
移动开发 时间:
2015-01-11 14:40:27
阅读次数:
372