Java数据结构之单链表的实现

时间:2021-11-07 10:33:16

类:节点类,单链表类

实现方法:添加节点,插入节点,删除节点

public class Node {

private int data;// 节点的值
public Node next;// 指向下一个节点的指针

public Node(int data) {// 初始化head
this.data = data;
this.next = null;
}

public Node(int data, Node next) {
this.data = data;
this.next = next;
}

public int getData() {
return data;
}

public void setData(int data) {
this.data = data;
}
}

public class MyList {	private Node head = null;//定义头节点	private int nodeNum = 0;//记录节点数目	//添加元素	public void append(Node x){				if(head == null){			head = x;		}else{			Node node = head;			while(node.next != null){				node = node.next;			}			node.next = x;		}		nodeNum ++;	}		//插入元素	public void insert(Node x,int index){		if(index < nodeNum){			nodeNum ++;			Node node = head;			for(int i = 1;i<=index-2;i++){				node = node.next;			}			x.next = node.next;			node.next = x;		}	}		//删除元素	public void delete(Node x){		nodeNum -- ;		Node node = null;		for(node = this.getHead();node != null ; node = node.next){			if(node.next != null && node.next.getData() == x.getData()){				if (node.next.next != null) {					node.next = node.next.next;				} else {					node.next = null;				}			}		}	}		//打印列表	public void show(){		Node node = null;		for(node = this.getHead();node != null ; node = node.next){			System.out.println(node.getData());		}	}		public Node getHead(){		return head;	}	public int getNodeNum(){		return nodeNum;	}		public static void main(String[] args){		MyList myList = new MyList();		Node node_1 = new Node(1);		Node node_2 = new Node(2);		Node node_3 = new Node(3);		Node node_4 = new Node(4);		Node node_5 = new Node(5);		myList.append(node_1);		myList.append(node_2);		myList.append(node_3);		myList.append(node_4);		myList.append(node_5);		myList.show();		System.out.println("-----------------------");		Node node_6 = new Node(6);		Node node_7 = new Node(7);		myList.insert(node_6,3);		myList.insert(node_7, 4);		myList.show();		System.out.println("-----------------------");		myList.delete(node_7);		myList.show();	//	System.out.println(myList.getNodeNum());	}}

结果可以正常输出