데이터 구조 - 선형 표 의 링크 저장 학습

단 방향 링크 는 선형 표 로 실제 적 으로 노드 (Node) 로 구성 되 고 하나의 링크 는 수량 이 정 해 지지 않 은 노드 를 가진다.그 데 이 터 는 메모리 에 저장 되 어 있 지 않 습 니 다. 저 장 된 데 이 터 는 메모리 에 분산 되 어 있 습 니 다. 모든 노드 는 다음 노드 의 저장 위 치 를 알 수 있 을 뿐 입 니 다.N 각 노드 (Node) 로 단 방향 링크 를 구성 하고 모든 Node 는 본 Node 의 데이터 와 다음 Node 를 기록 합 니 다.밖으로 노출 된 것 은 머리 노드 (Head) 하나 뿐 입 니 다. 우 리 는 링크 의 모든 조작 을 직접적 이거 나 간접 적 으로 머리 노드 를 통 해 이 루어 집 니 다.
링크 의 실현 은 다음 과 같다.
package linearList;
class Node{ public Node next; public int data;
public Node(int data){//     
    this.next=null;
    this.data=data;
}

}
public class LinkList { Node head =null;
public void addNode(int data){
    Node newNode =new Node(data);
    if(head==null){
        head = newNode;
        return;
    }
    Node cur = head;//    , head    
    while(cur.next!=null){//    head.next  
        cur=cur.next;
    }
    cur.next = newNode;//       
}

public int length(){//      
    int length =0;
    Node cur=head;
    while(cur.next!=null){
        length++;
        cur=cur.next;
    }
    return length;
}

public Boolean deleteNode(int index){
    if(index<1||index>length()){//index      
        return false;
    }

    if(index==1){//         
        head =head.next;
        return true;
    }

    int i=1;
    Node preNode=head;
    Node nxtNode=preNode.next;
    while(nxtNode!=null){//                 (      )
        if(i==index){
            preNode.next=nxtNode.next;
            return true;
        }
        else
            preNode=nxtNode;
            nxtNode=nxtNode.next;
            i++;
    }
    return true;

}

 public void printList() {//    
        Node tmp = head;
        while (tmp != null) {
            System.out.println(tmp.data);
            tmp = tmp.next;
        }
    }

public static void main(String[] args) {//  
    LinkList list = new LinkList();
    list.addNode(5);
    list.addNode(3);
    list.addNode(1);
    list.addNode(2);
    list.addNode(55);
    list.addNode(36);
    System.out.println("linkLength:" + list.length());
    System.out.println("head.data:" + list.head.data);
    list.printList();
    list.deleteNode(4);
    System.out.println("After deleteNode(4):");
    list.printList();
}

}
“`

좋은 웹페이지 즐겨찾기