定义结点类
包括数据域、指针域
/*
* 链结点
*/
public class Node {
//数据域
public long data;
//指针域
public Node next;
//默认构造方法
public Node(long value){
this.data=value;
}
/*
* 显示方法
*/
public void display(){
System.out.println(data+" ");
}
}
定义链表类
<pre name="code" class="java">/*
* 链表
*/
public class LinkList {
// 头结点
private Node first;
public LinkList() {
first = null;
}
}
链表操作
1、插入
每次从头插入
/*
* 插入一个结点,在头结点后进行插入
*/
public void insertFirst(long value) {
Node node = new Node(value);
if (first == null)
first = node;
else {
node.next = first;
first= node;
}
}
2、查找
/*
* 查找
*/
public Node find(long value){
Node cur=first;
while(cur.data!=value){
if(cur.next==null)
return null;
cur=cur.next;
}
return cur;
}
3、删除
每次从头删除
/*
* 删除一个结点,在头结点后进行删除
*/
public Node deleteFirst() {
Node tmp = first;
first = tmp.next;
return tmp;
}
根据数据域删除
/*
* 删除,根据数据域
*/
public Node delete(long value){
Node cur=first; //当前结点
Node pre=first; //前一个结点
while(cur.data!=value){
if(cur.next==null)
return null;
pre=cur;
cur=cur.next;
}
if(cur==first){ //删第一个结点
first=first.next;
}
else{ //不是第一个结点
pre.next=cur.next;
}
return cur;
}
4、显示
/*
* 显示
*/
public void display() {
Node cur = first;
while (cur!= null) { //循环条件是当前结点不为空
cur.display();
cur = cur.next;
}
}