文档章节

数据结构之链表

paluadan
 paluadan
发布于 2016/05/14 15:29
字数 592
阅读 6
收藏 0
public Node findLastNode(Node head, int index) {
 
 if (node == null) {
 return null;
 }
 
 Node first = head;
 Node second = head;
 
 //让second结点往后挪index个位置
 for (int i = 0; i < index; i++) {
 second = second.next;
 }
 
 //让first和second结点整体向后移动,直到second结点为Null
while (second != null) {
 first = first.next;
 second = second.next;
 }
 
 //当second结点为空的时候,此时first指向的结点就是我们要找的结点
return first;
}

本文包含链表的以下内容:

  1、单链表的创建和遍历

  2、求单链表中节点的个数

  3、查找单链表中的倒数第k个结点(剑指offer,题15)

  4、查找单链表中的中间结点

  5、合并两个有序的单链表,合并之后的链表依然有序【出现频率高】(剑指offer,题17)

  6、单链表的反转【出现频率最高】(剑指offer,题16)

  7、从尾到头打印单链表(剑指offer,题5)

  8、判断单链表是否有环

        9、取出有环链表中,环的长度

  10、单链表中,取出环的起始点(剑指offer,题56)。本题需利用上面的第8题和第9题。

  11、判断两个单链表相交的第一个交点(剑指offer,题37)

public class LinkList {

public Node head;

public Node current;

 

//方法:向链表中添加数据

public void add(int data) {

 //判断链表为空的时候

 if (head == null) {//如果头结点为空,说明这个链表还没有创建,那就把新的结点赋给头结点

 head = new Node(data);

 current = head;

 } else {

 //创建新的结点,放在当前节点的后面(把新的结点合链表进行关联)

 current.next = new Node(data);

 //把链表的当前索引向后移动一位

 current = current.next; //此步操作完成之后,current结点指向新添加的那个结点

 }

}

 

//方法:遍历链表(打印输出链表。方法的参数表示从节点node开始进行遍历

public void print(Node node) {

 if (node == null) {

 return;

 }

 

current = node;

 while (current != null) {

 System.out.println(current.data);

 current = current.next;

 }

}

 

class Node {

//注:此处的两个成员变量权限不能为private,因为private的权限是仅对本类访问。

 int data; //数据域

 Node next;//指针域

 

 public Node(int data) {

 this.data = data;

}

}

 

 

public static void main(String[] args) {

LinkList list = new LinkList();

//向LinkList中添加数据

 for (int i = 0; i < 10; i++) {

 list.add(i);

 }

 

 list.print(list.head);// 从head节点开始遍历输出

}

 

}

本文转载自:

共有 人打赏支持
paluadan
粉丝 0
博文 1
码字总数 0
作品 0
哈尔滨
第一阶段:Java内功秘籍-线性表

前言 为什么要学习数据结构与算法,如果你学会了做安卓,javaweb,前端等,都是你的武功秘籍,但是如果你的内功不够好,再厉害的功夫也是白费。 数据结构和算法:什么是数据结构,什么是数据...

达叔小生
08/06
0
0
数组和链表结构(python)_2

本文内容目录如下,会分拆为两篇笔记,另一则笔记是 "数组和链表结构(python)_1"。 3. 链表结构 Linked Structures 在数组之后,链表结构可能使程序中最常用的数据结构。 3.1 单链表结构和双...

曾翔翔
07/28
0
0
redis数据结构之一:链表

链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。redis提供五种数据结构:String、hash、list、set、sorted set。这五大数据类型底层...

mypsf
2016/10/24
171
0
线性表(Linear List)

线性表(linear list) 1、特点 线性表是我们日常工作中最简单也是最常用的一种数据结构。 它有如下特点: 每个数据元素最多只能有一个直接前趋。 每个数据元素最多只能有一个直接后继。 只有...

星汉
09/07
0
0
数据结构与算法(三)--单向链表

有的时候,处于内存中的数据并不是连续的。那么这时候,我们就需要在数据结构中添加一个属性,这个属性会记录下面一个数据的地址。有了这个地址之后,所有的数据就像一条链子一样串起来了,那...

andy521zhu
2015/04/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
45分钟前
1
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
1
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
3
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
2
0
20180921 su与sudo命令、限制root用户通过ssh远程登录

su 命令 用户切换。 su # 切换到root用户su username # 切换到username用户# su 后面加-时,会初始化当前用户的各种环境su - username # 指定用户执行某些命令 su - -c "touch /tm...

野雪球
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部