这是一个用JAVA实现的链表的定义以及基本的操作,这些操作包括前插法插入新的节点和后插法插入新的节点以及遍历的操作。
package linklist;
/**
* @author zhang
*
*
*/
public class LinkList {
private Node root; //定义根节点
/**
* 定义链表的节点
* @author zhang
*
*/
class Node{
Node next; //下一个节点的引用
Object value; //节点上的值
}
/**
* 创建一个新的节点
* @param value 节点上的值
* @return 创建好的节点
*/
private Node createNode(Object value){
Node node = new Node();
node.next = null;
node.value = value;
return node;
}
/**
* 后插法插入节点
* @param element 节点的值
*/
public void put(Object element){
if(root == null){
//这是一颗新的树
Node root,node;
root = createNode(null);
node = createNode(element);
root.next = node;
this.root = root;
}else{
//这不是一颗新的树,具体操作过程:
//1.从根节点开始 2.寻找尾节点 3.在尾节点后插入新的节点
Node next = root.next;
while(next.next != null){
//System.out.println(next.value);
next = next.next; //继续后移节点
}
//寻找到了尾节点,执行构建新节点,以及插入新节点的操作
Node node = createNode(element);
node.next = null;
next.next = node;
}
}
/**
* 前插法插入新的节点
* @param value 节点上的值
*/
public void afterPut(Object value){
if(root == null){
//这是一个新的链表
Node root = createNode(null);
Node node = createNode(value);
root.next = node;
this.root = root;
}else{
//替换第一个节点
Node temp = root.next;
Node node = createNode(value);
root.next = node;
node.next = temp;
}
}
/**
* 遍历节点,显示节点元素
*/
public void display(){
if(root != null){
Node next = root.next;
while(next.next != null){
System.out.print(next.value+"\t");
next = next.next;
}
}else{
System.out.println("该链表为空");
}
}
public static void main(String[] args) {
LinkList linklist = new LinkList();
for(int i=0;i<10;i++){
linklist.put(i);
}
System.out.println("后插法插入:");
linklist.display();
for(int i=0;i<10;i++){
linklist.afterPut(i);
}
System.out.println("\n");
System.out.println("前插法插入:");
linklist.display();
}
}