Java實現數據結構--單鏈表


public class MyLink {

	public static void main(String[] args) {
		LinkList<Integer> list = new LinkList<Integer>(null);//頭結點
		list.insert(1, list);
		list.insert(2, list);
		list.insert(3, list);
		list.insert(4, list);
		list.insert(5, list);
		//list.reverse(list);
		//list.delete(list, 5);
		list.traverse(list);
		
	}

}

class LinkList<T> {
	T data;
	LinkList<T> next;

	LinkList(T data) {
		this.data = data;
	}

	// 插入一個元素(後插入)
	public void insert(T data, LinkList<T> list) {
		LinkList<T> newNode = new LinkList<>(data);
		LinkList<T> tempNode = list;
		while (tempNode.next != null) {
			tempNode = tempNode.next;
		}
		tempNode.next = newNode;
	}

	// 遍歷單鏈表
	public void traverse(LinkList<T> list) {
		LinkList<T> tempNode = list.next;
		while (tempNode != null) {
			System.out.println(tempNode.data);
			tempNode = tempNode.next;
		}
	}
	
	//反轉鏈表
	public void reverse(LinkList<T> list) {
		LinkList<T> head = list;
		LinkList<T> nextNode = head.next;//保留下一個
		head.next = null;
		while(nextNode != null) {
			LinkList<T> temp = nextNode.next;
			nextNode.next = head.next;
			head.next = nextNode;
			nextNode = temp;
		}
	}
	
	//根據索引刪除
	public void delete(LinkList<T> list,int index) {
		if(index < 1)	return;
		LinkList<T> head = list;
		int i = 1;
		while(head != null && i < index) {
			i++;
			head = head.next;//尋找刪除結點前驅
		}
		LinkList<T> delNode = head.next;
		head.next = delNode.next;
		delNode.next = null;
		
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章