링크 의 자바 구현

3922 단어 자바 구현
링크 구 조 를 사용 하면 배열 링크 는 데이터 크기 의 단점 을 미리 알 아야 한다. 링크 구 조 는 컴퓨터 메모리 공간 을 충분히 이용 하여 유연 한 메모리 동적 관 리 를 실현 할 수 있다.그러나 링크 는 배열 이 무 작위 로 읽 는 장점 을 잃 었 고 링크 는 결점 의 지침 도 메 인 을 증가 하기 때문에 공간 비용 이 비교적 크다.컴퓨터 과학 에서 링크 는 기본 적 인 데이터 구조 로 서 다른 유형의 데이터 구 조 를 생 성 할 수 있다.
 
        링크 는 보통 일련의 노드 로 구성 되 어 있 으 며, 각 노드 는 임의의 인 스 턴 스 데이터 (data fields) 와 하나 또는 두 개 를 포함 하여 이전 / 또는 다음 노드 의 위 치 를 가리 키 는 링크 ("links") 를 포함한다.
링크 의 가장 뚜렷 한 장점 은 일반적인 배열 과 관련 된 항목 을 배열 하 는 방식 이 메모리 나 디스크 에서 의 순서 와 다 를 수 있 고 데이터 의 액세스 가 서로 다른 배열 순서 에서 전환 되 어야 한 다 는 것 이다.
링크 는 같은 유형의 데 이 터 를 가리 키 는 지침 (링크) 을 포함 하기 때문에 자기 지시 데이터 형식 입 니 다.링크 는 표 의 임의의 위치 에 있 는 노드 를 삽입 하고 제거 할 수 있 으 나 무 작위 액세스 가 허용 되 지 않 습 니 다.
package com.algorithm;

/**
 *       ,     
 * @author lenovo
 *
 */
public class Node {

	/**
	 *    
	 */
	public long data;
	
	//   (   ),           
	public Node next;
	
	public Node(long value){
		this.data =value;
	}
	
	/**
	 *     
	 */
	public void display(){
		System.out.print(data+" ");
	}
}

 
 
package com.algorithm;

/**
 *   ,      
 * @author lenovo
 *                           ,                 ,           。
 *                ,               ,       。
 *       ,                            。
 *
 *            ,             (data fields)            /            ("links")。
 *          ,                                  ,                   。
 *              ,                    (  )。                   ,         。
 */
public class LinkList {

	/**
	 *    ,      
	 */
	private Node first;
	
	public LinkList(){
		first =null;
	}
	
	/**
	 *       ,      
	 */
	public void insertFirst(long value){
		Node node = new Node(value);
		node.next = first;
		first =node;
	}
	
	/**
	 *       ,      
	 */
	public Node deleteFirst(){
		Node node = first;
		first=node.next;
		return node;
	}
	
	/**
	 *     
	 */
	public void display(){
		Node current = first;
		
		while(current!=null){
			current.display();
			current = current.next;
		}
		System.out.println();
	}
	
	/**
	 *     
	 * @param value
	 * @return
	 */
	public Node find(long value){
		Node current = first;
		while(current.data!=value){
			if(current.next==null){
				return null;
			}
			current = current.next;
		}
		return current;
	}
	
	/**
	 *     ,       
	 * @param value
	 * @return
	 */
	public Node delete(long value){
		Node current = first;
		Node previous =first; //    
		while(current.data!=value){
			if(current.next==null){
				return null;
			}
			previous=current;
			current = current.next;
			
		}
		if(current == first) {
			first = first.next;
		} else {
			previous.next = current.next;
		}
		return current;
	}
	
	public static void main(String[] args) {
		LinkList linkList = new LinkList();
		linkList.insertFirst(34);
		linkList.insertFirst(23);
		linkList.insertFirst(12);
		
		linkList.display();
		
		linkList.deleteFirst();
		linkList.display();
		
		Node node = linkList.find(34);
		node.display();
		
		System.out.println("--------");
		 node = linkList.delete(34);
		 node.display();
		 
		 System.out.println("~~~~~~~~~~~~~~~~~~~~~~");
		 linkList.display();
	}
}

 

좋은 웹페이지 즐겨찾기