링크 의 자바 구현
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();
}
}