链表元素的添加以及增删改查:
public class Linklist {
// 保存头节点
Node head;
// 得到链表中的数据个数
public int size() {
if (head == null) {
return 0;
}
int size = 1;
Node tNode = head;
while (tNode.next != null) {
tNode = tNode.next;
size++;
}
return size;
}
// 向链表中添加数据
public boolean add(int data) {
Node node = new Node();
node.data = data;
if (head == null) {
this.head = node;
} else {
Node tNode = head;
while (tNode.next != null) {
tNode = tNode.next;
}
tNode.next = node;
}
return true;
}
// 根据下标查询数据
public int get(int index) {
if (index >= size()) {
System.out.println("下标越界异常:" + index);
return 0;
}
Node tNode = head;
while (index > 0) {
index--;
tNode = tNode.next;
}
return tNode.data;
}
// 根据下标修改数据
public boolean set(int index, int data) {
if (index >= size()) {
System.out.println("下标越界异常:" + index);
return false;
}
Node tNode = head;
for (int i = 0; i < index; i++) {
tNode = tNode.next;
}
tNode.data = data;
return true;
}
// 根据下标删除数据
public boolean remove(int index) {
if (index >= size()) {
System.out.println("下标越界异常:" + index);
return false;
}
if (index == 0) {
head = head.next;
} else {
Node tNode = head;
for (int i = 0; i < index - 1; i++) {
tNode = tNode.next;
}
if (tNode.next.next == null) {
tNode.next = null;
} else {
tNode.next = tNode.next.next;
}
}
return true;
}
// 根据下标删除数据
public boolean remove(Node node) {
if (node.next == null) {
System.out.println("此方法无法删除最后一个元素");
return false;
}
node.data = node.next.data;
node.next = node.next.next;
return true;
}
//所有操作通过头节点实现
//返回链表中间值的下标
//查找倒数第n个元素
//删除链表中的重复节点
//链表反转
//倒叙输出链表中的所有内容(递归)
}
public class Node {
int data;
Node next;
}
package com;
public class Test {
public static void main(String[] args) {
Linklist linklist = new Linklist();
linklist.add(3);
linklist.add(5);
linklist.add(8);
linklist.add(99);
linklist.add(4);
linklist.add(79);
linklist.add(348);
linklist.add(933);
//
// linklist.set(3, 199);
//
// linklist.remove(5);
// //随机得到一个节点。在不知道头节点的情况下删除此节点。
Node node = linklist.head.next.next.next;
linklist.remove(node);
for (int i = 0; i < linklist.size(); i++) {
System.out.print(linklist.get(i) + " ");
}
}
}
运行结果:
结果正好删除了99这个元素。