⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linkedlist.java

📁 本压缩文件中含有线程的控制
💻 JAVA
字号:
package c10;


public class LinkedList<E> {
	private ListNode head;
	private ListNode current;
	private ListNode previous;
	
	public LinkedList(){
		head = null;
		current = null;
		previous = null;
	}
	
	public int length(){
		int count = 0;
		ListNode position = head;
		while(position!=null){
			count++;
			position = position.link;
		}
		return count;
	}
	
	public void addANodeToStart(E addData){
		//E[] e = new E[10] ;
		head = new ListNode(addData,head);
		if(current == head.link && current != null)
			previous = head;
	}
	
	public void deleteHeadNode(){
		if(head!=null){
			head = head.link;
		}else{
			
			System.out.println("empty list!");
			System.exit(0);
		}
	}
	
	public boolean onList(E target){
		return (Find(target)!=null);
	}
	
	public void showList(){
		ListNode position = head;
		while(position!=null){
			System.out.println(position.data);
			position = position.link;
		}
	}
	
	public void resetIteration(){
		current = head;
		previous = null;
	}
	
	public void goToNext(){
		if(current!=null){
			previous = current;
			current = current.link;
		}else if(head!=null){
			System.out.println("Iterated too many times or uninitialized iteration");
			System.exit(0);
		}else{
			System.out.println("Iterating with an empty list. ");
			System.exit(0);
		}
	}
	
	public boolean moreToIterate(){
		return (current != null);
	}
	
	public E getDataAtCurrent(){
		if (current!=null)
			return current.data;
		else{
			System.out.println("Getting data when current is not at any node");
			System.exit(0);
		}
		return null;
	}
	
	public void resetDataAtCurrent(E newData){
		if(current!=null){
			current.data = newData;
		}else{
			System.out.println("Setting data when current is not at any node.");
			System.exit(0);
		}
	}
	
	public void insertNodeAfterCurrent(E newData){
		ListNode newNode = new ListNode();
		newNode.data = newData;
		
		if(current!=null){
			newNode.link = current.link;
			current.link = newNode;
		}else if(head!=null){
			System.out.println("Inserting when iterator is past all nodes"
					+" or uninistialized iterator.");
			System.exit(0);
		}else{
			System.out.println("Using insertNodeAfterCurrent with empty list.");
			System.exit(0);
		}
	}
	
	public void deleteCurrentNode(){
		if((current!=null)&&(previous!=null)){
			previous.link = current.link;
			current = current.link;
		}else if((current!=null)&&previous==null){//at head node
			head = head.link;
			current = head;
		}else{//current is null
			System.out.println("Deleting with uninitialized current or an empty list");
			System.exit(0);
		}
	}
	
	
	private ListNode Find(E target){
		ListNode position = head;
		E data;
		while(position!=null){
			data = position.data;
			if(data.equals(target)){
				return position;
			}
			position = position.link;
		}
		
		return null;
	}
	
	private class ListNode {
		
		private E data;
		private ListNode link;
		
		public ListNode(E data, ListNode link) {
			this.data = data;
			this.link = link;
		}
		public ListNode() {
			data = null;
			link = null;
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -