首先定义结点:
public class Node {
public Node nextNode=null;
public Integer value=null;
}
其次是定义链表实现功能:
package wxj;
public class LinkList {
private Node header = null;
private Integer length = 0;
// 判空
public boolean IsEmpty() {
if (this.length == 0)
return true;
else
return false;
}
// 得到链表长度
public Integer Length() {
return this.length;
}
// 插入头节点
public void insertHead(Integer data) {
Node p = new Node();
p.value = data;
p.nextNode = this.header;
this.header = p;
this.length++;
}
// 插入尾节点
public void insertEnd(Integer data) {
Node p = new Node();
p.value = data;
if (this.IsEmpty())
this.header = p;
else {
Node q = this.header;
while (q.nextNode != null) {
q = q.nextNode;
}
q.nextNode = p;
}
this.length++;
}
// 在第i个位置插入
public void insertData(Integer data, Integer i) {
Node p = new Node();
Node q = this.header;
p.value = data;
Integer j;
for (j = 1; j < i; j++) {
q = q.nextNode;
}
p.nextNode = q.nextNode;
q.nextNode = p;
this.length++;
}
// 删除头节点
public void deleteHead() {
if (this.IsEmpty())
;
else {
this.header = this.header.nextNode;
this.length--;
}
}
// 删除尾节点
public void deleteEnd() {
if (this.IsEmpty())
;
else {
Node p = this.header;
if (p.nextNode == null)
this.header = null;
else {
while (p.nextNode.nextNode != null) {
p = p.nextNode;
}
p.nextNode = null;
}
this.length--;
}
}
// 删除第i个位置上的数
public void deleteData(Integer i) {
if(this.length>=i){
Node p = this.header;
for (Integer j = 1; j < i - 1; j++) {
p = p.nextNode;
}
p.nextNode = p.nextNode.nextNode;
this.length--;
}
else
System.out.println("长度不够");
}
// 获得头节点
public Node getHead() {
if (this.IsEmpty())
return null;
else {
return this.header;
}
}
// 获得尾节点
public Node getEnd() {
if (IsEmpty())
return null;
else {
Node p = this.header;
while (p.nextNode != null) {
p = p.nextNode;
}
return p;
}
}
// 找到第i个位置上的值
public Integer getData(Integer i) {
if (this.length >= i && i > 0) {
Node p = this.header;
for (Integer j = 1; j < i; j++) {
p = p.nextNode;
}
return p.value;
}
else {
System.out.println("不存在");
//Exception e = new Exception();
//throw e;
return null;
}
}
// 输出
public void show() {
System.out.println("该链表是:");
Node p = this.header;
while (p != null) {
System.out.println(p.value);
p = p.nextNode;
}
}
}
主类:
package wxj;
public class Main {
public static void main(String[] args){
LinkList l =new LinkList();
l.insertHead(1);
l.insertEnd(2);
l.insertData(3, 2);
l.insertData(4, 3);
l.show();
l.deleteData(5);
l.show();
//System.out.println(l.getData(3));
/*try {
System.out.println(l.getData(2));
} catch (Exception e) {
System.out.println("返回的值不存在");
e.printStackTrace();
// TODO: handle exception
}*/
}
}
水木轩昊昊