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;
		
	}
}

 

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