坚持阵列队列出列函数实现的问题。 似乎函数本身是正确的,但问题是我理解参数中的指针。为什么我在这里退出Segmentation故障?
#include <stdio.h>
#include <stdbool.h>
#define CAPACITY 3
typedef struct {
int head;
int size;
int elements[CAPACITY];
} queue;
bool isempty(queue* q);
int size(queue* q);
bool enqueue(queue* q, int element);
bool dequeue(queue* q, int* element);
int main(void) {
queue q;
if(isempty(&q)) {
printf("Queue is empty\n");
}
enqueue(&q, 34);
enqueue(&q, 2);
enqueue(&q, 4);
dequeue(&q, &q.head);
if(!isempty(&q)) {
printf("Queue is not empty\n");
}
printf("%i\n", q.elements[1]);
}
bool isempty(queue* q) {
return q->size == 0;
}
int size(queue* q) {
return q->size;
}
bool enqueue(queue* q, int element) {
if(q->size < CAPACITY) {
q->elements[(q->head + q->size) % CAPACITY] = element;
q->size++;
printf("Enqueue: %d\n", element);
return true;
}
return false;
}
bool dequeue(queue* q, int* element) {
if(q->size > 0) {
*element = q->elements[q->head];
q->head = (q->head+1) % CAPACITY;
q->size--;
return true;
}
return false;
}