以下内容基于jdk1.7.0_79源码; 继承自HashMap,一个有序的Map接口实现,这里的有序指的是元素可以按插入顺序或访问顺序排列; 与HashMap的异同:同样是基于散列表实现,区别是,LinkedHashMap内部多了一个双向循环链表的维护,该链表是有序的,可以按元素插入顺序或元素最近访
分类:
编程语言 时间:
2016-03-19 12:46:59
阅读次数:
266
约瑟夫问题,有n个人,编号为1,2,...,n,围成一个圆圈,按照顺时针方向从编号为k的人从1开始报数,报数为m的人出列,如此重复下去,直到所有的人都出列。编写一个算法,要求输入n,k,m,按照出列的顺序输出编号。 主要借助了两个游标进行移动,p有两个意义,第一,报数结束,p指向被删除的结点,第二,
分类:
其他好文 时间:
2016-03-14 08:18:24
阅读次数:
207
小孩报数问题(循环链表) TimeLimit:1000MS MemoryLimit:65536K 64-bit integer IO format:%lld Problem Description 有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下
分类:
其他好文 时间:
2016-03-05 18:41:11
阅读次数:
178
没什么大的变动,所以书中这部分只用了两段话略过 #include<stdio.h> #include<stdlib.h> typedef int ElemType; struct Node{ Node *next; ElemType data; }; void CreateList(Node*&L)
分类:
其他好文 时间:
2016-03-05 13:10:55
阅读次数:
142
对于双向链表,个人推荐使用带头结点尾结点的方式来处理会比较方便。我在《C语言实现双向非循环链表(不带头结点)的节点插入》中详细实现了在不带头结点的情况下的插入。这次我们将会来在使用头结点尾结点的情况下在任意的位置插入元素。代码上传至 https://github.com/chenyufeng1991/InsertNodeDoubleLinkedList_HeadNode 。核心代码如下://插入一...
分类:
编程语言 时间:
2016-03-04 16:30:20
阅读次数:
210
list.h #ifndef LIST_H__ #define LIST_H__ struct list_head { struct list_head *prev ; struct list_head *next ; }; #define LIST_HEAD_INIT(name) { &(name
分类:
其他好文 时间:
2016-03-03 17:32:50
阅读次数:
142
在实际使用中,双链表比单链表方便很多,也更为灵活。对于不带头结点的非循环双链表的基本操作,我在《C语言实现双向非循环链表(不带头结点)的基本操作》这篇文章中有详细的实现。今天我们就要用两种不同的方式头插法和尾插法来建立双链表。代码上传至 https://github.com/chenyufeng1991/HeadInsertAndTailInsertDoubleList 。核心代码如下://尾...
分类:
其他好文 时间:
2016-03-03 14:52:45
阅读次数:
160
采用循环链表,用取余操作做。(VS2010) #include <stdio.h>#include <stdlib.h>#include "stdafx.h"#include <iostream>typedef struct node{ int data; node* next;}node; voi
分类:
其他好文 时间:
2016-02-29 10:45:06
阅读次数:
160
我在之前一篇博客《C语言实现单链表的基本操作》实现了如何清空一个单链表,现在换成了双向的非循环链表,整体思路是一样的。代码上传至:https://github.com/chenyufeng1991/ClearDoubleLinkedList 。核心代码如下:Node *ClearDoubleLinkedList(Node *pNode){
if (pNode == NULL) {
...
分类:
编程语言 时间:
2016-02-28 13:58:39
阅读次数:
178