实验报告:数据结构队列应用

一、实验目的

通过本次实验,学习和掌握数据结构队列的概念、特点以及应用,了解队列的基本操作和实现方式,提高数据结构编程能力。

二、实验原理

队列是一种线性数据结构,是一种先进先出(First In First Out,简称FIFO)的数据结构,它只允许在队列的前端进行删除操作,在队列的后端进行插入操作。在队列中插入元素的操作称为入队,删除元素的操作称为出队。队列还有一个重要的特性,就是它只允许在队列的前端进行访问,也就是说,队列中的元素必须按照先进先出的顺序进行处理。

三、实验内容

本次实验主要是通过编写C语言程序,实现队列的基本操作,包括队列的初始化、入队、出队、判空、判满以及打印队列等操作。

1. 队列的定义

定义一个结构体,包含队列的最大长度、队列的当前长度以及队列的头指针和尾指针。

#define MAXSIZE 100
typedef struct Queue {
    int data[MAXSIZE];
    int front; // 队列头指针
    int rear; // 队列尾指针
    int size; // 队列当前长度
} Queue;

2. 队列的初始化

队列的初始化操作是将队列中的各个指针指向合适的位置,让队列处于一个空状态。

void initQueue(Queue *queue) {
    queue->front = 0; // 队列头指针指向数组第一个元素
    queue->rear = 0; // 队列尾指针指向数组第一个元素
    queue->size = 0; // 队列长度为0
}

3. 判空操作

判空操作是判断队列是否为空,即队列的长度是否为0。

int isEmpty(Queue *queue) {
    return queue->size == 0;
}

4. 判满操作

判满操作是判断队列是否已满,即队列的长度是否等于最大长度。

int isFull(Queue *queue) {
    return queue->size == MAXSIZE;
}

5. 入队操作

入队操作是将元素插入到队列的尾部。

void enqueue(Queue *queue, int value) {
    if (isFull(queue)) {
        printf('Queue is full, can not enqueue.\n');
        return;
    }
    queue->data[queue->rear] = value;
    queue->rear = (queue->rear + 1) % MAXSIZE;
    queue->size++;
}

6. 出队操作

出队操作是将队列的第一个元素删除,并返回该元素的值。

int dequeue(Queue *queue) {
    if (isEmpty(queue)) {
        printf('Queue is empty, can not dequeue.\n');
        return -1;
    }
    int value = queue->data[queue->front];
    queue->front = (queue->front + 1) % MAXSIZE;
    queue->size--;
    return value;
}

7. 打印队列

打印队列是将队列中的元素从队头到队尾打印出来。

void printQueue(Queue *queue) {
    if (isEmpty(queue)) {
        printf('Queue is empty.\n');
        return;
    }
    printf('Queue: ');
    int i = queue->front;
    while (i != queue->rear) {
        printf('%d ', queue->data[i]);
        i = (i + 1) % MAXSIZE;
    }
    printf('\n');
}

四、实验结果

通过编写上述代码,可以实现队列的基本操作。以下为测试结果:

int main() {
    Queue queue;
    initQueue(&queue);
    printQueue(&queue); // 输出 Queue: 
    enqueue(&queue, 1);
    enqueue(&queue, 2);
    enqueue(&queue, 3);
    printQueue(&queue); // 输出 Queue: 1 2 3 
    printf('dequeue value: %d\n', dequeue(&queue)); // 输出 dequeue value: 1
    printQueue(&queue); // 输出 Queue: 2 3 
    enqueue(&queue, 4);
    enqueue(&queue, 5);
    enqueue(&queue, 6);
    printQueue(&queue); // 输出 Queue: 2 3 4 5 6 
    printf('dequeue value: %d\n', dequeue(&queue)); // 输出 dequeue value: 2
    printQueue(&queue); // 输出 Queue: 3 4 5 6 
    return 0;
}

五、实验总结

本次实验通过编写C语言程序,实现了队列的基本操作,包括队列的初始化、入队、出队、判空、判满以及打印队列等操作。通过实验,深入理解了队列的概念、特点以及应用,提高了数据结构编程能力。


原文地址: https://www.cveoy.top/t/topic/n37E 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录