데이터 구조의 링크 와 배열 (2) - 링크 구현 대기 열
4395 단어 데이터 구조
배열 로 대기 열 을 실현 한 후에 우 리 는 링크 를 통 해 대기 열 을 실현 할 수 있 습 니 다. 다음은 코드 예제 입 니 다.
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. 요구 가 없 으 면 조작 하 는 과정 에서 링크 의 원시 구 조 를 파괴 하지 않도록 한다.만약 에 링크 의 구 조 를 파괴 하 는 것 이 현재 비교적 좋 은 실현 방식 이 라면 데 이 터 를 처리 한 후에 링크 의 원시 데이터 구 조 를 복원 하 는 것 을 기억 해 야 한다.
데이터 구조의 학습 에서 저 는 생활 이나 컴퓨터 의 모든 문 제 를 해결 할 때 '심사숙고 하고 행동 하 라' 는 이 치 를 깊이 깨 달 았 습 니 다.무엇 을 해 야 할 지, 어떻게 해 야 할 지 알 고 나 서 착수 해야만 비교적 쉽게 문 제 를 해결 할 수 있다.무엇 을 해 야 할 지, 어떻게 해 야 할 지 조차 모른다 면 지금 하 는 행동 이 성공 할 수 있다 는 개론 은 매우 작다.따라서 컴퓨터 인 코딩 으로 몇 가지 문 제 를 해결 하려 면 인 코딩 을 서 두 르 지 말고 먼저 사고방식 과 주 의 를 분명히 생각 한 다음 에 자신의 사고방식 을 실현 하 는 데 착수 해 야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.