(데이터 구조) 자바 기본 링크 01 실현

31499 단어 데이터 구조
인터페이스
##                  
public interface IList {
	public boolean isEmpty();
	public void  clear();
	public int length();
	public void display();
	public Object value(int i);
	public int indexOf(Object x);
	public void remove(int i) throws Exception;
	public void insert(int i,Object x) throws Exception;
	 
}

위 에서 아래로 링크 가 비어 있 는 지 여 부 를 판단 하 는 링크 링크 링크 길이 표시 출력 에 해당 하 는 색인 값 을 가 져 와 해당 하 는 값 색인 을 가 져 와 특정한 노드 삽입 노드 를 제거 합 니 다.
다음은 해당 노드 를 쓰 는 거 예요.
##                        。      
public class Node {
	private Object data;
	private Node next;
	
	public Node() {
		this(null,null);
	}
	public Node(Object data) {
		this(data,null);
	}
	public Node(Object data,Node next) {
		this.data=data;
		this.next=next;
	}
	public Object getData() {
		return data;
	}
	public void setData(Object data) {
		this.data = data;
	}
	public Node getNext() {
		return next;
	}
	public void setNext(Node next) {
		this.next = next;
	}	
}

링크 클래스 구현
##         

먼저 하나의 계승 인터페이스 가 기능 을 실현 하 는 것 을 써 야 한다. 그리고 세 는 노드 류 를 사용 해 야 한다.그럼 조작 한 데 이 터 는 어떻게?
##public class LinkList implements IList
	     private Node head;

구조 방법 은 두 가지 가 있 는데 하 나 는 무 삼 구조 이 고 하 나 는 삼 구조 이다.파 라 메 트릭 구 조 는 두 가지 가 있 습 니 다. 1: 당신 이 만 든 링크 구 조 는 당신 이 입력 한 순서 와 같은 출력 입 니 다. 처음부터 끝까지 2: 당신 이 만 든 링크 구 조 는 당신 이 입력 한 순서 와 다른 출력 입 니 다. 끝 에서 끝까지.
public LinkList() {
		head=new Node();
	}
	public LinkList(int n,boolean order) {
		this();	
		if(order)
		{
			try {
				create1(n); //   
			} catch (Exception e) {
				e.printStackTrace();
			}
		}else {
			try {
				create2(n);   //   
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
	}
##              。         
@Override 
	public void clear() {
		head.setNext(null);
		head.setData(null);
	}
	@Override
	public boolean isEmpty() {
		return head.getNext()==null;
	} 
	
	@Override
	public int length() {
		Node p=head.getNext(); //1 l=1  2 l=2
		int length=0;
		while(p!=null) {
			p=p.getNext();
			length++;
		}
		return length;
	}
	
	@Override
	public void  display() { //   
		if(!isEmpty()) {
				Node p=head.getNext();
				while(p!=null) {
					System.out.print(p.getData()+" ");
					p=p.getNext();
				}
				System.out.println();
		}else
			System.out.println("    ");
	}

이 네 개 는 상당히 간단 하 다.그러나 한 칸 의 헤드 를 비 우 는 데 이 터 는 헤드 없 는 링크 에서 작 동 되 며 데 이 터 를 비 우지 않 아 도 됩 니 다.여 기 는 머리 가 있 는 체인 시계 입 니 다.
@Override
	public Object value(int i) {  // 1 2 3 4
		Node p=head.getNext();
		int j=0;		//     p j       

		while(p!=null&&j<i) {   //           i    
			p=p.getNext();	//  p=null   j=i         p 
			j++;//     j     
		}
		
		if(p==null||j>i)// p==null       j>i       
		{
			System.out.println("    ");
		}
		return p.getData();
	}
##    0   ,    。
@Override
	public int indexOf(Object x) {
		Node p=head.getNext();					 // 0 1 2 3 4 5 6
		int j=0;	 //             	 // p p p p p p p
		while(p!=null&&!p.getData().equals(x)) { // 1 2 3 4 5 6
			p=p.getNext();						 //            
			j++;
		}
		if(p!=null)
			return j;
		else
			return -1;
	}

여 기 는 색인 을 구 하 는 위의 그림 입 니 다.
@Override
	public void remove(int i) throws Exception {
		Node p=head.getNext();
		int j=0;
		
		while(p!=null&&j<i-1) {
			p=p.getNext();
			j++;
		}
		if(p==null||j>i-1)
			throw new Exception("      ");
		
		p.setNext(p.getNext().getNext());
		
		
	}

낡은 곡 조 를 다시 연주 하 니, 위치 만 잡 을 줄 알 면 자전 거 를 타지 않 아 도 된다.
@Override
	public void insert(int i,Object x) throws Exception {
		Node p=head;
		int j=-1;//          0        -1 
		while(p!=null&&j<i-1) { // 0 -1 1   
			p=p.getNext();  //             
			j++;			//     i          
		}
		if(p==null||j>i-1)
		{
			throw new Exception("      ");
		}
		Node s=new Node(x); //    
		
		s.setNext(p.getNext()); 
		p.setNext(s);
		
	} 

\# # 다음은 꼬리 삽입 법 과 머리 삽입 법 입 니 다.
public void create1(int n) throws Exception {
		 Scanner sc=new Scanner(System.in);
		 for(int i=0;i<n;i++) {
			 System.out.println("    "+(i+1)+"   ");
			 insert(length(),sc.next());
		 }
		
	}

	public void create2(int n) throws Exception {
		Scanner sc=new Scanner(System.in);
		for(int i=0;i<n;i++) {
			System.out.println("    "+(i+1)+"   ");
			insert(0,sc.next());
		}
		
	}

싫 을 정도 로 간단 하 다.하지만 이것 은 앞장 서 는 부분 을 겨냥 한 것 이 니 주의 하 세 요.앞장 서지 못 한 다음 에.
##                ,    。。。

좋은 웹페이지 즐겨찾기