File tree 2 files changed +89
-0
lines changed
2 files changed +89
-0
lines changed Original file line number Diff line number Diff line change @@ -244,6 +244,53 @@ class CQueue {
244
244
*/
245
245
```
246
246
247
+ ### ** Rust**
248
+
249
+ ``` rust
250
+ struct CQueue {
251
+ s1 : Vec <i32 >,
252
+ s2 : Vec <i32 >
253
+ }
254
+
255
+
256
+ /**
257
+ * `&self` means the method takes an immutable reference.
258
+ * If you need a mutable reference, change it to `&mut self` instead.
259
+ */
260
+ impl CQueue {
261
+
262
+ fn new () -> Self {
263
+ CQueue {
264
+ s1 : Vec :: new (),
265
+ s2 : Vec :: new (),
266
+ }
267
+ }
268
+
269
+ fn append_tail (& mut self , value : i32 ) {
270
+ self . s1. push (value );
271
+ }
272
+
273
+ fn delete_head (& mut self ) -> i32 {
274
+ match self . s2. pop () {
275
+ Some (value ) => value ,
276
+ None => {
277
+ while ! self . s1. is_empty () {
278
+ self . s2. push (self . s1. pop (). unwrap ());
279
+ }
280
+ self . s2. pop (). unwrap_or (- 1 )
281
+ }
282
+ }
283
+ }
284
+ }
285
+
286
+ /**
287
+ * Your CQueue object will be instantiated and called as such:
288
+ * let obj = CQueue::new();
289
+ * obj.append_tail(value);
290
+ * let ret_2: i32 = obj.delete_head();
291
+ */
292
+ ```
293
+
247
294
### ** ...**
248
295
249
296
```
Original file line number Diff line number Diff line change
1
+ struct CQueue {
2
+ s1 : Vec < i32 > ,
3
+ s2 : Vec < i32 >
4
+ }
5
+
6
+
7
+ /**
8
+ * `&self` means the method takes an immutable reference.
9
+ * If you need a mutable reference, change it to `&mut self` instead.
10
+ */
11
+ impl CQueue {
12
+
13
+ fn new ( ) -> Self {
14
+ CQueue {
15
+ s1 : Vec :: new ( ) ,
16
+ s2 : Vec :: new ( ) ,
17
+ }
18
+ }
19
+
20
+ fn append_tail ( & mut self , value : i32 ) {
21
+ self . s1 . push ( value) ;
22
+ }
23
+
24
+ fn delete_head ( & mut self ) -> i32 {
25
+ match self . s2 . pop ( ) {
26
+ Some ( value) => value,
27
+ None => {
28
+ while !self . s1 . is_empty ( ) {
29
+ self . s2 . push ( self . s1 . pop ( ) . unwrap ( ) ) ;
30
+ }
31
+ self . s2 . pop ( ) . unwrap_or ( -1 )
32
+ }
33
+ }
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Your CQueue object will be instantiated and called as such:
39
+ * let obj = CQueue::new();
40
+ * obj.append_tail(value);
41
+ * let ret_2: i32 = obj.delete_head();
42
+ */
You can’t perform that action at this time.
0 commit comments