定义结点
public class Node {
private int data;
private Node next;
public Node() {}
public Node(int data){
this.data= data;
}
public Node(int data,Node next) {
this.data=data;
this.next=next;
}
public Object getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public boolean isLast() {
return next==null;
}
public boolean hasNext() {
return next==null;
}
}
定义操作
public class MylinkList {
public Node head; // 定义一个头结点
public MylinkList() {
head=new Node();
}
public MylinkList(int data) {
head=new Node();
head.setData(data);
head.setNext(null);
}
//在线性表末尾进行追加
public void append(Node node) {
Node temp=head;
node.setNext(null);
while(temp.getNext()!=null) {
temp=temp.getNext();
}
temp.setNext(node);
}
//打印输出
public void show() {
Node node=head;
while(node.getNext()!=null) {
System.out.print(node.getData()+" ");
node=node.getNext();
}
System.out.println(node.getData()+" ");
}
//返回当前长度
public int size() {
Node temp=head;
int length=0;
while(temp.getNext()!=null) {
length++;
temp=temp.getNext();
}
length++;
return length;
}
//删除
public void remove(int index) {
if(index<-1||index>size()-1) {
System.out.println("输入不合法");
}else if(index==0) {
head=head.getNext();
}else if(index==size()-1){
Node temp=head;
for(int i=0;i<index-1;i++) {
temp=temp.getNext();
}
temp.setNext(null);
}else {
Node temp=head;
for(int i=0;i<index-1;i++) {
temp=temp.getNext();
}
temp.setNext(temp.getNext().getNext());
}
}
//插入在节点后
public void insert(int index,Node node) {
if(index<0||index>size()) {
System.out.println("插入位置不合法");
}else {
Node temp=head;
for(int i=0;i<index;i++) {
temp=temp.getNext();
}
node.setNext(temp.getNext());
temp.setNext(node);
}
}
public Node getNode(int index) {
if(index<0||index>size()-1) {
System.out.println("无此位置");
}else {
Node temp=head;
for(int i=0;i<index;i++) {
temp=temp.getNext();
}
return temp;
}
return new Node(-2);
}
}
测试
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Demo {
public static void main(String[] args) {
MylinkList list=new MylinkList(1);
list.append(new Node(2));
list.append(new Node(3));
list.append(new Node(4));
list.append(new Node(5));
list.show();
System.out.println("----------");
Node node=list.getNode(2);
System.out.println(node.getData());
}
}