06-一方向チェーンテーブル


1、チェーンテーブルはノード方式で格納される.
2,各ノードはdataドメイン、nextドメインを含む:次のノードを指す;
3、チェーンテーブルの各ノードは必ずしも連続しているとは限らない.
4,チェーンテーブルは,先頭ノードのチェーンテーブルと,先頭ノードでないチェーンテーブルとに分けられ,実際の状況に応じて決定される.
リードノードの一方向チェーンテーブル
ヘッダノード
1、具体的なデータを保存する
2、作用は単鎖表の頭として
先頭ノードの単一チェーンテーブル
追加(作成)
1、先頭ノードを作成する
2、他のノードを追加し、チェーンテーブルの最後に直接追加します.
package com.datastack.linkedlist;

public class SimpleLinkedList {
	public HeroNode head = new HeroNode(0,"","");//   
	
	/**
	 *     :       
	 * 1,      
	 * 2,      next       
	 * @param heroNode
	 */
	public void add(HeroNode heroNode){
		HeroNode temp = head;
		while(true){
			if(temp.next == null){
				break;
			}
			temp = temp.next;
		}
		temp.next = heroNode;
	}
	
	/**
	 *            
	 * @param heroNode
	 */
	public void addByOrder(HeroNode heroNode){
		HeroNode temp = head;
		boolean flag = false;//           
		while(true){
			if(temp.next == null){
				break;
			}
			if(temp.next.no > heroNode.no){
				break;
			}else if(temp.next.no == heroNode.no){
				flag = true;
				break;
			}
			temp = temp.next;
		}
		if(flag){
			System.out.printf("           %d    ,    
",heroNode.no); }else{ heroNode.next = temp.next; temp.next = heroNode; } } /**  *   */ public void list(){ // if(head.next == null){ System.out.println(" "); return; } HeroNode temp = head.next; while(true){ if(temp == null){ break; } System.out.println(temp); temp = temp.next; } } /**  *   * @param heroNode  */ public void update(HeroNode heroNode){ HeroNode temp = head.next; boolean flag = false;// while(true){ if(temp == null){ break; } if(temp.no == heroNode.no){ flag = true; break; } temp  = temp.next; } if(flag){ temp.name = heroNode.name; temp.nickname = heroNode.nickname; }else{ System.out.println(" "); } } /**  *   * @param heroNode  */ public void delete(int no){ HeroNode temp = head; boolean flag = false;// while(true){ if(temp.next == null){ break; } if(temp.next.no == no){ flag = true; break; } temp = temp.next; } if(flag){ temp.next = temp.next.next; }else{ System.out.println(" "); } } }
package com.datastack.linkedlist;

public class HeroNode {
	public int no;
	public String name;
	public String nickname;//  
	public HeroNode next;//     
	
	//   
	public HeroNode(int no,String name,String nickname){
		this.no = no;
		this.name = name;
		this.nickname = nickname;
	}
	
	//  
	public String toString(){
		return "HeroNode [no="+no+",name="+name+",nickname="+nickname+"]";
	}
	
}
package com.datastack.linkedlist;

public class SimpleLinkedListDemo {
	public static void main(String[] args) {
		HeroNode hero1 = new HeroNode(1, "  ", "   ");
		HeroNode hero3 = new HeroNode(3, "  ", "   ");
		HeroNode hero2 = new HeroNode(2, "   ", "   ");
		HeroNode hero4 = new HeroNode(4, "  ", "   ");
		
		SimpleLinkedList linkedList = new SimpleLinkedList();
		linkedList.addByOrder(hero1);
		linkedList.addByOrder(hero4);
		linkedList.addByOrder(hero2);
		linkedList.addByOrder(hero3);
		
		linkedList.list();
		
		HeroNode heroNode = new HeroNode(2, "wuyong", "wy");
		linkedList.update(heroNode);
		System.out.println("   ");
		linkedList.list();
		System.out.println("   ");
		linkedList.delete(1);
		linkedList.list();
		System.out.println("   ");
		linkedList.delete(4);
		linkedList.list();
	}
}