顺序排队程序怎么写

时间:2025-01-26 13:24:25 单机游戏

顺序排队程序可以使用多种方法实现,以下是几种常见的实现方式:

1. 使用数组实现顺序队列

```c

include

define MAXSIZE 100

typedef struct {

int data[MAXSIZE];

int front; // 队首指针

int rear; // 队尾指针

} Queue;

// 初始化队列

void initQueue(Queue *q) {

q->front = -1;

q->rear = -1;

}

// 入队操作

bool enQueue(Queue *q, int data) {

if (q->rear == MAXSIZE - 1) {

return false; // 队列已满

}

q->data[++q->rear] = data;

return true;

}

// 出队操作

int deQueue(Queue *q) {

if (q->front == q->rear) {

return -1; // 队列为空

}

return q->data[q->front++];

}

int main() {

Queue q;

initQueue(&q);

enQueue(&q, 1);

enQueue(&q, 2);

enQueue(&q, 3);

printf("出队元素: %d\n", deQueue(&q));

printf("出队元素: %d\n", deQueue(&q));

return 0;

}

```

2. 使用循环数组实现顺序队列

```c

include

define MAXSIZE 100

typedef struct {

int data[MAXSIZE];

int front; // 队首指针

int rear; // 队尾指针

} CircularQueue;

// 初始化队列

void initQueue(CircularQueue *q) {

q->front = 0;

q->rear = -1;

}

// 入队操作

bool enQueue(CircularQueue *q, int data) {

if ((q->rear + 1) % MAXSIZE == q->front) {

return false; // 队列已满

}

q->rear = (q->rear + 1) % MAXSIZE;

q->data[q->rear] = data;

return true;

}

// 出队操作

int deQueue(CircularQueue *q) {

if (q->front == q->rear) {

return -1; // 队列为空

}

int data = q->data[q->front++];

return data;

}

int main() {

CircularQueue q;

initQueue(&q);

enQueue(&q, 1);

enQueue(&q, 2);

enQueue(&q, 3);

printf("出队元素: %d\n", deQueue(&q));

printf("出队元素: %d\n", deQueue(&q));

return 0;

}

```

3. 使用链表实现顺序队列