面试中经常出现的编程题之一。
最直接的办法是先遍历一遍单链表,记下链表的节点数,然后再次遍历,直到到达节点数减去n的节点,返回结果。实际情况中若链表数目很多而n相对不大,这种方法需要大约两次遍历。更简单的实现方法是采用双指针。一个指针先从链表头开始步进n步,然后另一个指针从头开始,两个指针一同步进直到达到链表尾。这是第二个指针所指的节点即为链表的倒是第n个节点。实现代码如下:
...
阅读全文
在之前的两篇博文——线性表接口的实现_Java和线性表的链式存储结构之单链表结点类的实现_Java中,我们实现了线性表的接口和单链表的结点类,今天让我们来实现线性表的链式存储结构——单链表类。
注释写得很详细了,直接看吧:
package dataStructure.linearList;
import dataStructure.linearList.Node; ...
阅读全文
在前几次的博文中我提到了——线性表的顺序存储结构之顺序表类的实现,这几次我们准备实现线性表的链式存储结构,不过之前需要一些预备知识,那就是本文了。
由于单链表有一个个结点链接而成,以下定义单链表及地点类。
在C/C++语言中,采用指针类型存储地址来实现链式存储结构。Java语言不支持指针类型,提供引用方式保存包括地址在内的结构化信息。引用是比指针更健壮、更...
阅读全文
本章要求有以下预备知识:线性表的顺序存储结构之顺序表类的实现_Java
今天我们来使用顺序表类求解约瑟夫(Josephus)环问题。
首先我闲来描述下约瑟夫环问题:古代某法官要裁决n个犯人的死刑,他有一条荒唐的法律,将犯人站成一个圆圈,从第s个人开始数起,每数到第d个犯人,就拉出来处决,然后再从下一个开始数d个,数到的人再处决,……,知道剩下最后一个犯人予以赦免。
使用...
阅读全文
摘自:http://www.360doc.com/content/09/0515/10/74060_3509929.shtml
下面我讨论的都是服务器领域,因为桌面版没有意义,桌面还是Windows的天下,用Linux做桌面除了新鲜,确实没有任何优势。
官网:http://www.centos.org/
CentOS其实是Redhat的内核,感觉是会成熟稳定一点,相比旧Red...
阅读全文
在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类。
首先让我们来看下顺序表的定义:
线性表的顺序存储是用一组连续的内存单元依次存放线性表的数据元素,元素在内存的物理存储次序与它们在线性表中的逻辑次序相同,即元素ai与其直接前驱ai-1及直接后继ai+1的存储位置相邻。顺序存储的线性表也成为顺序表(s...
阅读全文
线性表是其组成元素间具有线性关系的一种线性结构,对线性表的基本操作主要有插入、删除、查找、替换等,这些操作可以在线性表的任何位置进行。线性表可以采用顺序存储结构和链式存储结构表示。
本接口的类属于dataStructure包的linearList子包。线性表接口LList声明如下,描述线性表的取值、置值、插入、删除等基本操作。
package dataStructure.li...
阅读全文
Windows中USB设备插入的拔出和所产生的消息值
#消息过滤钩子 WH_MSGFILTER = (-1);
#记录输入钩子 WH_JOURNALRECORD = 0;
#插入消息钩子 WH_JOURNALPLAYBACK = 1;
#键盘事件钩子 WH_KEYBOARD = 2;
#检查消息钩子 WH_GETMESSAGE = 3;
#窗口过程钩子(调用前) W...
阅读全文