34
34
*/
35
35
36
36
struct MyCircularQueue {
37
- capcity : usize ,
38
- length : usize ,
39
37
data : Vec < i32 > ,
38
+ capcity : usize ,
40
39
front : usize ,
41
40
rear : usize ,
42
41
}
@@ -49,8 +48,8 @@ struct MyCircularQueue {
49
48
impl MyCircularQueue {
50
49
51
50
fn new ( k : i32 ) -> Self {
52
- let k = k as usize ;
53
- MyCircularQueue { capcity : k, length : 0 , data : vec ! [ 0 ; k] , front : 0 , rear : 0 }
51
+ let k = k as usize + 1 ;
52
+ MyCircularQueue { capcity : k, data : vec ! [ 0 ; k] , front : 0 , rear : 0 }
54
53
}
55
54
56
55
fn en_queue ( & mut self , value : i32 ) -> bool {
@@ -59,7 +58,6 @@ impl MyCircularQueue {
59
58
}
60
59
self . rear = ( self . rear + 1 ) % self . capcity ;
61
60
self . data [ self . rear ] = value;
62
- self . length += 1 ;
63
61
true
64
62
}
65
63
@@ -68,7 +66,6 @@ impl MyCircularQueue {
68
66
return false ;
69
67
}
70
68
self . front = ( self . front + 1 ) % self . capcity ;
71
- self . length -= 1 ;
72
69
true
73
70
}
74
71
@@ -88,11 +85,11 @@ impl MyCircularQueue {
88
85
}
89
86
90
87
fn is_empty ( & self ) -> bool {
91
- self . length == 0
88
+ self . front == self . rear
92
89
}
93
90
94
91
fn is_full ( & self ) -> bool {
95
- self . capcity == self . length
92
+ self . front == ( self . rear + 1 ) % self . capcity
96
93
}
97
94
}
98
95
@@ -114,7 +111,6 @@ impl MyCircularQueue {
114
111
#[ test]
115
112
fn test_622 ( ) {
116
113
let mut queue = MyCircularQueue :: new ( 3 ) ;
117
- assert_eq ! ( queue. capcity, 3 ) ;
118
114
assert ! ( queue. en_queue( 1 ) ) ;
119
115
assert ! ( queue. en_queue( 2 ) ) ;
120
116
assert ! ( queue. en_queue( 3 ) ) ;
0 commit comments