Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3ac57e0

Browse files
循环队列
1 parent 24e5294 commit 3ac57e0

File tree

1 file changed

+15
-6
lines changed
  • src/main/java/com/algorithm/study/demo/datastructure/queue

1 file changed

+15
-6
lines changed

‎src/main/java/com/algorithm/study/demo/datastructure/queue/SqQueue.java‎

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其另一端进行删除操作。
66
队列中允许进行插入操作的一端称为队尾,允许进行删除操作的一端称为队头。队列的插入操作通常称作入队列,队列的删除操作通常称作出队列。
77
8-
循环队列可以有效的利用资源。如果使用普通数组实现队列时,如果不进行移动,随着数据的不断读写弹出插入,会出现假满队列的情况。例如不断向队列中添加元素,然后在弹出元素。这是弹出元素所空闲出来的空间并没有得到重复利用,这是就会出现数组尾部已经满了,但是头部还有空闲空间没有得到利用。
8+
循环队列可以有效的利用资源。如果使用普通数组实现队列时,如果不进行移动,随着数据的不断读写弹出插入,会出现假满队列的情况。例如不断向队列中添加元素,然后在弹出元素。这是弹出元素所空闲出来的空间并没有得到重复利用,
9+
这是就会出现数组尾部已经满了,但是头部还有空闲空间没有得到利用。
910
入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针
1011
1112
* Created by liuxun on 2017年6月22日.
@@ -33,21 +34,20 @@ public int size(){
3334
* 循环队列入队操作
3435
* @param element
3536
*/
36-
public void add(E element){
37-
if (isFull()){
38-
throw new RuntimeException("队列已满,size:"+size());
39-
}
37+
public boolean add(E element){
38+
if ((rear+1)%maxsize==front) return false;//队列已满
4039
data[rear]=element;
4140
//逻辑上实现首尾相连,循环队列
4241
rear=(rear+1)%maxsize;
42+
return true;
4343
}
4444
/**
4545
* 循环队列出队操作,并清空头部
4646
* @return
4747
*/
4848
public Object poll(){
4949
if (rear==front && data[front]==null){
50-
thrownewRuntimeException("空的队列");
50+
returnnull;
5151
}
5252
Object result=data[front];
5353
data[front]=null;
@@ -67,4 +67,13 @@ private boolean isFull(){
6767
return front == rear && data[front]!=null;
6868
}
6969

70+
public static void main(String[] args) {
71+
SqQueue queue=new SqQueue(8);
72+
for (int i=0;i<8;i++){
73+
queue.add(i);
74+
}
75+
System.out.println(queue.poll());
76+
System.out.println(queue.size());
77+
}
78+
7079
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /