链表(Chain本文所说链表均为单向链表,以下均简称单向链表)实际上是由节点(Node)组成的,一个链表拥有不定数量的节点。而向外暴露的只有一个头节(Head),我们对链表的所有操作,都是直接或者间接地通过其头节点来进行的。
单链表的骨架,我也单独写了一个类为了更清晰的了解链表的结构,类初始化变量为头节点对象和链表大小(即当前节点的个数),
节点(Node)是由一个需要储存的对象及对下一个节点的引用组成的。也就是说,节点拥有两个成员:储存的对象、对下一个节点的引用。
下面给大家放一张网上的图,这样更清晰,下面我用了最简单的java代码实现了单链表的增加数据和查找所有数据。仅供初级学习链表的结构。
</pre>下面是我的节点类,可以看到Node类初始化变量组成为值和下一个节点。<pre name="code" class="java">package com.gaorui.Stack;
/**
* Java实现链表
* @author JavaGR_ais
*
*/
public class Node {
private int NodeValue;//节点的值
private Node NextNode;//指向下一个节点的引用,即保存了整个下一个节点
//获取当前对象的值
public int getNodeValue(){
return this.NodeValue;
}
//获取下一个节点
public Node NextNode(){
return this.NextNode;
}
public Node(int NodeValue,Node NextNode){
this.NextNode = NextNode;
this.NodeValue = NodeValue;
}
//获取当前节点
public Object getNode(){
return this.NodeValue;
}
//获取下一节点
public Object getNextNode(){
return this.NextNode;
}
}
单链表的骨架,我也单独写了一个类为了更清晰的了解链表的结构,类初始化变量为头节点对象和链表大小(即当前节点的个数),
package com.gaorui.Stack;
/**
* Java实现链表骨架,添加节点
*
* @author JavaGR_ais
*
*/
public class LinkList {
private Node headNode;//头结点
private int listSize;//链表大小(即当前节点的个数)
// 获取链表中的节点数
public int getlistsize() {
return this.listSize;
}
// 添加节点
public void addNode(int NodeValue) {
// 如果没有头结点则添加新节点为头结点
if (headNode == null) {
headNode = new Node(NodeValue, null);
listSize++;
}
// 有头结点的情况
else {
headNode = new Node(NodeValue, headNode);
listSize++;
}
}
//打印整个链表
public void prinAllLinkList(){
if (listSize != 0) {
for (Node node = headNode; node != null; node = node.NextNode()) {
System.out.println(node.getNodeValue());
}
}
}
public static void main(String[] args) {
LinkList ll = new LinkList();
ll.addNode(3);
ll.addNode(4);
ll.addNode(5);
ll.addNode(6);
ll.addNode(7);
ll.prinAllLinkList();
}
}