1.准备数据
class Data// 数据元素类
{
// ...
}
class Node// 链表节点类
{
Data data = new Data();
Node next;
}
2.插入尾节点
Node addEnd(Node head, Data data) {
Node node, temp;
if ((node = new Node()) == null) {
System.out.println("申请内存失败!");
return null;
}
node.data = data;
node.next = null;
if (head == null) {
head = node;
return head;
}
temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = node;
return head;
}
3.插入头结点
Node addFirst(Node head, Data data) {
Node node;
if ((node = new Node()) == null) {
System.out.println("申请内存失败!");
return null;
}
node.data = data;
node.next = head;
head = node;
return head;
}
4.查找节点
Node findNode(Node head, Data data) {
Node temp;
temp = head;
while (temp != null) {
if (temp.data.compareTo(data)) {
return temp;
}
temp = temp.next;
}
return null;
}
5.插入节点
Node insertNode(Node head, Data findData, Data data) {
Node node, temp;
if ((node = new Node()) == null) {
System.out.println("申请内存失败!");
return null;
}
node.data = data;
temp = head;
while (temp != null) {
if (temp.data.compareTo(findData)) {
break;
}
temp = temp.next;
}
if (temp != null) {
node.next = temp.next;
temp.next = node;
} else {
System.out.println("未找到正确的插入位置!");
}
return head;
}
6.删除节点
Node deleteNode(Node head, Data data) {
if (head == null) {
return null;
}
if (head.data.compareTo(data)) {
head = head.next;
return head;
}
Node node, temp;
node = head;
temp = head.next;
while (temp != null) {
if (temp.data.compareTo(data)) {
node.next = temp.next;
temp = null;
} else {
node = temp;
temp = temp.next;
}
}
return head;
}
7.计算链表长度
int listLength(Node head) {
Node temp;
int len = 0;
temp = head;
while (temp != null) {
len++;
temp = temp.next;
}
return len;
}
8.显示所有节点
void printAllNode(Node head){
Node temp;
Data data;
temp=head;
while (temp!=null) {
data=temp.data;
System.out.println(...);
temp=temp.next;
}
}