循环队列

622. 设计循环队列 - 力扣(LeetCode)

C语言

 1 typedef struct {
 2     int front;
 3     int rear;
 4     int capcity;
 5     int* Elements;
 6 } MyCircularQueue;
 7 
 8 
 9 MyCircularQueue* myCircularQueueCreate(int k) {
10     MyCircularQueue* obj = malloc(sizeof(MyCircularQueue));
11     obj -> front = 0;
12     obj -> rear = 0;
13     obj -> capcity = k + 1;
14     obj -> Elements = malloc((k + 1) * sizeof(int));
15     return obj;
16 }
17 
18 bool myCircularQueueIsEmpty(MyCircularQueue* obj) {
19    if(obj -> front == obj -> rear)  return true;
20    return false;
21 }
22 
23 bool myCircularQueueIsFull(MyCircularQueue* obj) {
24    if((obj -> rear + 1) % obj -> capcity == obj -> front)  return true;
25    return false;
26 }
27 
28 bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) {
29     if(myCircularQueueIsFull(obj))  return false;
30     obj -> Elements[obj -> rear] = value;
31     obj -> rear = (obj -> rear + 1) % obj -> capcity;
32     return true;
33 }
34 
35 bool myCircularQueueDeQueue(MyCircularQueue* obj) {
36    if(myCircularQueueIsEmpty(obj))  return false;
37    obj -> front = (obj -> front + 1) % obj -> capcity;
38    return true;
39 }
40 
41 int myCircularQueueFront(MyCircularQueue* obj) {
42    if(myCircularQueueIsEmpty(obj))  return -1;
43    return obj -> Elements[obj -> front];
44 }
45 
46 int myCircularQueueRear(MyCircularQueue* obj) {
47    if(myCircularQueueIsEmpty(obj))  return -1;
48    return obj -> Elements[(obj -> rear - 1 + obj -> capcity) % obj -> capcity];
49 }
50 
51 void myCircularQueueFree(MyCircularQueue* obj) {
52     free(obj -> Elements);
53     free(obj);
54 }
55 
56 /**
57  * Your MyCircularQueue struct will be instantiated and called as such:
58  * MyCircularQueue* obj = myCircularQueueCreate(k);
59  * bool param_1 = myCircularQueueEnQueue(obj, value);
60  
61  * bool param_2 = myCircularQueueDeQueue(obj);
62  
63  * int param_3 = myCircularQueueFront(obj);
64  
65  * int param_4 = myCircularQueueRear(obj);
66  
67  * bool param_5 = myCircularQueueIsEmpty(obj);
68  
69  * bool param_6 = myCircularQueueIsFull(obj);
70  
71  * myCircularQueueFree(obj);
72 */

 

posted @ 2022-08-03 10:50  balabalahhh  阅读(30)  评论(0)    收藏  举报