定义单链表节点类
//定义一个链表类
public class ListNode{
//定义头结点
private int head;
//定义链表数据域
private int data;
//定义链表指针域
private next;
//定义链表长度
private int length;
//定义无参构造函数
public ListNode() {}
//链表类构造函数
public ListNode(int data){
this.data = data;
}
}
链表判空
if(head.next == null){
return true;
}else{
return false;
}
遍历链表
ListNode newNode = head.next;
while(newNode != null){
System.out.println(newNode.data);
newNode = newNode.next;
}
求单链表长度
ListNode newNode = head.next;
int length = 0;
while(newNode != null){
newNode = nweNode.next;
length ++;
}
按位查找(访问结点序号为 i 的结点,并返回对应值)
ListNode newNode = head.next;
int count = 1;
while(newNode != null && count < i){
newNode = newNode.next;
count ++;
}
if(newNode == null){
System.out.println("查找未知错误!");
}else{
return newNode.data;
}
按值查找(返回值等于x的结点在链表中的序号)
ListNode newNode = head.next;
int count = 1;
while(newNode != null){
if(newNode.data == x){
return count;
}
newNode = newNode.next;
count ++;
}
表中插入结点
ListNode newNode, node;
newNode.next = node.next;
node.next = newNode;
插入操作(在位置 i 处,插入值为 x 得新结点newNode)
ListNode node = head;
ListNode newNode = null;
int count = 0;
while(node != null && count < i -1){
node = node.next;
count ++;
}
if(node == null){
System.out.println("插入位置错误!");
}else{
ListNode newNode;
newNode.data = x;
newNode.next = node.next;
node.next = newNode;
}
链表头部插入新节点
ListNode newNode;
newNode.next = head;
this.head = newNode;
length ++;
将新节点插到头结点后面
ListNode newNode;
newNode.next = head.next;
head.next = newNode;
length ++;
在链表尾部插入元素
ListNode head;
ListNode node = head;
ListNode lastNode = null;
for(int i = 0; i < n; i ++){
ListNode lastNode;
node.next = lastNode;
node = lastNode;
}
lastNode.next = null;
删除表头结点
ListNode savaNode;
saveNode = head;
head = head.next;
delete saveNode;
删除表中结点或表尾结点
ListNode saveNode;
ListNode currentNode;
saveNode = currentNode.next;
currentNode.next = saveNode.next;
delete saveNode;
删除操作
Data x;
ListNode node = head;
ListNode saveNode = null;
int count = 0;
while(node != null && count < i - 1){
node = node.next;
count ++;
}
if(node == null || node.next == null){
System.out.println("删除位置错误!");
}else{
saveNode = node.next;
x = save.data;
node.next = saveNode.next;
delete saveNode;
return x;
}
析构函数(销毁单链表)
ListNode node = head;
while(node != null){
head = head.next;
delete node;
node = head;
}