데이터 구조 대기 열의 자바 실현 은 선형 과 체인 두 가지 방식 을 포함한다.
17697 단어 자바 구현
일반적인 방식 으로 먼저 Queue 의 인 터 페 이 스 를 정의 한 다음 에 이 인 터 페 이 스 를 실현 함으로써 선형 과 체인 식 의 두 가지 형식의 대기 열 을 실현 했다.
인터페이스 코드 는 다음 과 같 습 니 다.
1 package com.peter.java.dsa.interfaces;
2
3 public interface Queue<T> {
4
5 /* put item at rear of queue; */
6 void insert(T data);
7
8 /* take item from front of queue */
9 T remove();
10
11 /* peek at front of queue */
12 T peek();
13
14 boolean isEmpty();
15
16 boolean isFull();
17
18 int size();
19
20 void clear();
21 }
선형 스 택 의 코드 는 다음 과 같 습 니 다.
1 package com.peter.java.dsa.common;
2
3 import com.peter.java.dsa.interfaces.Queue;
4
5 public class LinearQueue<T> implements Queue<T> {
6 private int capacity;
7 private T[] t;
8 private int front;
9 private int rear;
10 private int size;
11
12 public LinearQueue() {
13 // TODO Auto-generated constructor stub
14 capacity = 16;
15 t = (T[]) new Object[capacity];
16 front = -1;
17 rear = -1;
18 size = 0;
19 }
20
21 public LinearQueue(int capacity) {
22 this.capacity = capacity;
23 t = (T[]) new Object[capacity];
24 front = -1;
25 rear = -1;
26 size = 0;
27 }
28
29 @Override
30 public void insert(T data) {
31 // TODO Auto-generated method stub
32 if (isEmpty()) {
33 front = (front + 1) % t.length;
34 t[front] = data;
35 rear = (rear + 1) % t.length;
36 } else {
37 if (isFull()) {
38 resize();
39 }
40 rear = (rear + 1) % t.length;
41 t[rear] = data;
42 }
43 size++;
44 }
45
46 @Override
47 public T remove() {
48 // TODO Auto-generated method stub
49 T tmp = null;
50 if (!isEmpty()) {
51 tmp = t[front];
52 t[front] = null;
53 front = (front + 1) % t.length;
54 size--;
55 }
56 return tmp;
57 }
58
59 @Override
60 public T peek() {
61 // TODO Auto-generated method stub
62 T tmp = null;
63 if (!isEmpty()) {
64 tmp = t[front];
65 }
66 return tmp;
67 }
68
69 @Override
70 public boolean isEmpty() {
71 // TODO Auto-generated method stub
72 return front + rear == -2 && front == rear % t.length;
73 }
74
75 @Override
76 public boolean isFull() {
77 // TODO Auto-generated method stub
78 return front == rear % t.length;
79 }
80
81 @Override
82 public int size() {
83 // TODO Auto-generated method stub
84 return size;
85 }
86
87 @Override
88 public String toString() {
89 // TODO Auto-generated method stub
90 StringBuffer buffer = new StringBuffer();
91 buffer.append("Linear Queue Content:[");
92 if (front < rear) {
93 for (int i = front; i < rear + 1; i++) {
94 buffer.append(t[i] + ",");
95 }
96 } else {
97 for (int i = front; i < t.length; i++) {
98 buffer.append(t[i] + ",");
99 }
100 for (int i = 0; i < rear + 1; i++) {
101 buffer.append(t[i] + ",");
102 }
103 }
104 buffer.append("]");
105 buffer.replace(buffer.lastIndexOf(","), buffer.lastIndexOf(",") + 1, "");
106 return buffer.toString();
107 }
108
109 private void resize() {
110 int oldSize = t.length;
111 T[] tmp = (T[]) new Object[oldSize * 2];
112 for (int i = 0; i < oldSize; i++) {
113 tmp[i] = t[front];
114 front = (front + 1) % oldSize;
115 }
116 front = 0;
117 rear = oldSize - 1;
118 }
119
120 @Override
121 public void clear() {
122 // TODO Auto-generated method stub
123 front = -1;
124 rear = -1;
125 }
126
127 }
복습 진도 에 따라 후속 코드 가 속속 업 데 이 트 될 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
데이터 구조 대기 열의 자바 실현 은 선형 과 체인 두 가지 방식 을 포함한다.실현 의 사고방식 은 다음 과 같다. 일반적인 방식 으로 먼저 Queue 의 인 터 페 이 스 를 정의 한 다음 에 이 인 터 페 이 스 를 실현 함으로써 선형 과 체인 식 의 두 가지 형식의 대기 열 을 실현 했다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.