데이터 구조의 링크 와 배열 (2) - 링크 구현 대기 열

4395 단어 데이터 구조
데이터 구조의 링크 와 배열 (1) - 링크 구현 대기 열
 
       배열 로 대기 열 을 실현 한 후에 우 리 는 링크 를 통 해 대기 열 을 실현 할 수 있 습 니 다. 다음은 코드 예제 입 니 다.
 
 
import java.util.LinkedList;

/*
 *             ,        
 */
public class LinkNode {
	
	private Object obj;//        
	private LinkNode next;//         
	//                    
	public LinkNode(Object obj){
		this.obj = obj ;
	}
	public void setObj(Object obj){
		this.obj = obj;
	}
	public Object getObj(){
		return obj;
	}
	
	public void setNext(LinkNode next){
		this.next = next;
	}
	public LinkNode getNext(){
		return next;
	}
	

}

 
 
 
링크 시트 의 대기 열 조작 기능 은 링크 리스트 클래스 에서 이 루어 집 니 다.
 
 
 
 
  
import java.security.acl.LastOwnerException;

import javax.swing.JOptionPane;
import javax.xml.soap.Node;

/*
 *      ,        
 */
public class LinkList {

	/**    
	 * @param args
	 */
	private static LinkNode root ;
	private static LinkNode last;
	
	
	/**
	 *          
	 * root:       
	 */
	public void printLinkList(LinkNode root){
		LinkNode node = root;
		while(node!=null){
			System.out.println(node.getObj()); 
			node = node.getNext(); 

		}
	}
	/**
	 *       
	 */
	public int getSize(){
		int n = 0;
		LinkNode temp = root;
		while( temp != null ){
			temp = temp.getNext();
			n++;
		}
		return n;
	}
	/**
	 *          
	 */
	public void  add(Object obj){
		//           ,  obj  
		LinkNode node = new LinkNode(obj);
		if(null == root){
			root = node;
			last = root;
		}else{
			// last  node
			last.setNext(node);
			//  node        
			last = node;

		}
		
	}
	/**
	 *           ,      
	 */
	public LinkNode getNode(int index){
		//             temp
		LinkNode temp = root;
		int count=1;
		while(count!=index){
			temp = temp.getNext();
			count++;
		}
		return temp;
	}
	/**
	 *          
	 */
	public void remove(int index){
		//  index        
		if(index<1 || index>this.getSize()){
			System.out.println("      !");
			
		}else{
			//                 
			if(index>1 && index<this.getSize()){
				//                    
				this.getNode(index-1).setNext(this.getNode(index+1));
			}
			//                
			if(1==index || this.getSize()==index){
				if(1==index){
					//      
					root = this.getNode(index+1);
				}else {
					//         					
					this.getNode(index-1).setNext(null);
					
				}
			}
		}

	}
	/**
	 *          ,             
	 */
	public void insert(int index,Object obj){
		//           
		LinkNode node = new LinkNode(obj);
		//  root    
		if(null == root){
			root = node ;
		}else{
			//       
			if(1==index){
				// node  root
				node.setNext(root);
				root = node;
			}
			if(index>1 || index<=this.getSize()){
				//         ,             
				LinkNode temp1 = this.getNode(index-1);
				LinkNode temp2 = this.getNode(index);
				//       
				temp1.setNext(node);
				node.setNext(temp2);
			}
		}
		
	}
}

 
 링크 문 제 를 처리 할 때 공공 주의 점 은 다음 과 같다.
1. 노드 의 방향 이 비어 있 는 지 항상 고려 해 야 한다.
2. 잘못된 주소 공간 에 바늘 을 가리 키 지 마 십시오.
3. 요구 가 없 으 면 조작 하 는 과정 에서 링크 의 원시 구 조 를 파괴 하지 않도록 한다.만약 에 링크 의 구 조 를 파괴 하 는 것 이 현재 비교적 좋 은 실현 방식 이 라면 데 이 터 를 처리 한 후에 링크 의 원시 데이터 구 조 를 복원 하 는 것 을 기억 해 야 한다.
     
        데이터 구조의 학습 에서 저 는 생활 이나 컴퓨터 의 모든 문 제 를 해결 할 때 '심사숙고 하고 행동 하 라' 는 이 치 를 깊이 깨 달 았 습 니 다.무엇 을 해 야 할 지, 어떻게 해 야 할 지 알 고 나 서 착수 해야만 비교적 쉽게 문 제 를 해결 할 수 있다.무엇 을 해 야 할 지, 어떻게 해 야 할 지 조차 모른다 면 지금 하 는 행동 이 성공 할 수 있다 는 개론 은 매우 작다.따라서 컴퓨터 인 코딩 으로 몇 가지 문 제 를 해결 하려 면 인 코딩 을 서 두 르 지 말고 먼저 사고방식 과 주 의 를 분명히 생각 한 다음 에 자신의 사고방식 을 실현 하 는 데 착수 해 야 한다.

좋은 웹페이지 즐겨찾기