1. 앞에 쓰십시오
데이터 구조의 대기열은 더 친숙해야하며, 이는 첫 번째 우선입니다. 순서로 인해 대기열로 명명됩니다. 대기하는 것과 같습니다. 전면 끝에 새 노드를 삽입하여 First.jdk Collection Framework에서 노드를 삭제하면 큐 인터페이스도 제공합니다. 이 인터페이스는 큐를 나타냅니다. 순차 대기열 : ArrayBlockingqueue, LinkedBlockingqueue. (위의 두 개는 발 색 대기열입니다) 그리고 다른 하나는 동시에 린드 큐입니다.
기본 구현은 두 가지 유형의 결합 목록으로 구성됩니다. 배열의 구현에는 단점이 있으며, 이는 잘못된 충만을 유발합니다. 처음에는 대기열이 비어 있으면 첫 번째 참조 변수의 기준 변수가 꼬리에 null입니다. 큐 요소가 삭제되면 전면+1이 발생하고 후면은 기본 배열의 용량과 같습니다. 순차적 인 저장 구조에서 Front는 항상 대기열에서 대기열에서 벗어나려는 요소의 인덱스를 저장하고 후면은 항상 대기열에 입력하려는 요소의 인덱스를 저장합니다. 대기열의 요소 수는 후면입니다. 순차 대기열에서, 기본 레이어는 배열이므로 저장된 데이터 요소는 변경되지 않으며 두 참조 변수 인 후면 및 전면 만 변경됩니다.
체인 저장을 사용하여 공간을 효과적으로 활용하는 데 사용할 수있는 것은 참조 변수가 추가 공간을 차지한다는 것입니다.
대기열에 대한 일반적인 작업 :
1 : 초기화
2 : 대기열의 길이를 반환합니다
3 : 요소를 추가하십시오
4 : 요소를 삭제합니다
5 : 헤더 요소에 액세스하십시오
6 : 대기열의 쌍 꼬리 요소에 액세스하십시오
7 : 대기열이 비어 있는지 확인하십시오
8 : 대기열을 지 웁니다
2. 사용자 정의 구현
소스 코드 표시가 명확하므로 소개 할 필요가 없습니다.
공개 클래스 LinkedQueue <t> {// 체인 큐의 데이터 노드를 나타내는 사용자 정의 체인 큐 사용 비 정적 내부 클래스 {// 체인 큐 개인 T 데이터의 데이터 노드를 표시합니다. // 다음 노드 개인 노드에 대한 참조; @SuppressWarnings ( "Unused") public node () {} public node (t data, node next) {this.data = data; this.next = 다음; }} // 체인 큐 개인 노드 전면의 헤드와 꼬리에 대한 참조를 정의합니다. 개인 노드 후면; // 체인 스택의 크기를 정의합니다. // 빈 체인-컬럼을 만듭니다. public 링크드 Queue () {front = null; rear = null;} // 특정 요소가있는 체인 페어 열을 생성하고 하나의 노드 공개 링크드 큐 (t 요소) {front = new Node (요소, null); // 동일한 요소 뒷면 = 전면; size ++;} // 체인 큐 공개 int 길이 () {return size; elementfront () {if (! bell (!)) {return front.data;} else {return null; }} // 큐의 마지막 요소에 액세스 public t emectRear () {if (! bell ()) {return rear.data; } else {return null; }} // 현재 체인 쌍 큐가 빈 공개 부울 빈 () {return size == 0; } // 체인 대기열을 지우십시오 public void clear () {front = null; 뒷면 = null; size = 0;} // 체인 큐에 노드를 삽입합니다-페어 공개 void add (t element) {// 체인 쌍 열이 비어 있으면 새 노드를 만들면 (front == null) {rear = new Node (요소, null); 전면 = 후면; } else {// 새 노드 노드를 동적으로 만듭니다. newRear = 새 노드 (요소, null); rear.next = newRear; 후면 = NewRear; } size ++;} // 체인 큐에서 노드를 삭제하고 삭제 된 노드 공개 t remove () {node oldfront = front; Front = front.next; oldfront.next = null; 크기--; return OldFront.data;} // 큐 공개 문자열을 반환하십시오 public string () {// 체인 큐가 빈 체인 큐인 경우 queue 큐인 경우 (empty ()) {return "[]"; } else {StringBuilder sbuilder = new StringBuilder ( "["); for (node current = front; current! = null; current.next) {sbuilder.append (current.data.toString ()+",");} int len = sbuilder.length (); return sbuilder.delete (len-1, len) .append ( "]"). tostring ();}} public static void main (string [] args) {linkedqueue <string> lqueue = new Linkedqueue <string> (); lqueue.add ( "AAA"); lqueue.add ( "bbb"); lqueue.add ( "CCC"); lqueue.add ( "ddd"); system.out.println ( "큐의 헤드 노드 값을 반환합니다. 큐 : "+lqueue.elementRear ()); System.out.println (lqueue.length ()); System.out.println (lqueue);}}실행 결과 :
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.