数据结构-实验4队列的基本操作.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
数据结构-队列的基本操作实验报告 本实验报告的主要目的是掌握队列的基本操作,包括链接存储队列的进队和出队等基本操作,以及环形队列的进队和出队等基本操作。通过本实验,学生将加深对队列结构的理解,逐步培养解决实际问题的编程能力。 实验目的: 1. 掌握链接存储队列的进队和出队等基本操作。 2. 掌握环形队列的进队和出队等基本操作。 3. 加深对队列结构的理解,逐步培养解决实际问题的编程能力。 实验内容: 1. 编写栈的基本操作函数,包括进队函数、出队函数和输出队列中元素函数。 2. 调用上述函数实现下列操作: (1) 调用进队函数建立一个队列。 (2) 读取队列中的第一个元素。 (3) 从队列中删除元素。 (4) 输出队列中的所有元素。 实验代码: ```c #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct QNode { int data; struct QNode *next; } QNode, *QueuePtr; typedef struct { QueuePtr front; // 队头指针 QueuePtr rear; // 队尾指针 } LinkQueue; int InitQueue(LinkQueue &Q) { // 构造一个空队列Q Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode)); if (!Q.front) exit(0); // 存储分配失败 Q.front->next = NULL; return 1; } int EnQueue(LinkQueue &Q, int e) { // 插入元素e,使之成为新的队尾元素 QueuePtr p; p = (QueuePtr)malloc(sizeof(QNode)); if (!p) exit(0); // 存储分配失败 p->data = e; p->next = NULL; Q.rear->next = p; Q.rear = p; return 1; } int DeQueue(LinkQueue &Q, int &e) { // 若队列不空,则删除Q 的队头元素,用e 返回其值并返回OK ;否则返回ERROR QueuePtr p; p = Q.front->next; e = p->data; Q.front->next = p->next; if (Q.rear == p) Q.rear = Q.front; // 如果最后一个元素出队,重置Q为空队 free(p); return 1; } void firstyuanshu(LinkQueue &Q) { int e; QueuePtr p; p = Q.front->next; e = p->data; printf("%d\n", e); } void OutputQueue(LinkQueue &Q) { QueuePtr p; if (Q.front == Q.rear) printf(" 队列为空 "); else { p = Q.front->next; while (p) { printf("%d\n", p->data); p = p->next; } } } void main() { int e, a, b, i; LinkQueue Q; InitQueue(Q); int x = 1, select; printf(" 队列的基本操作\n"); printf(" 1.调用进队函数简历一个队列:\n "); printf("2. 读取函数中的第一个元素:\n"); printf(" 3.从队列中删除元素:\n "); printf(" 4. 输出队列中的所有元素:\n "); printf(" 5. 退出\n "); while (x) { printf(" 请选择: "); scanf("%d", &select); switch (select) { case 1: printf(" 请输入需要进队的元素的个数:\n"); scanf("%d", &b); for (i = 0; i < b; i++) { printf(" 请输入进队数字:\n"); scanf("%d", &e); EnQueue(Q, e); } break; case 2: if (Q.front == Q.rear) printf(" 该队列为空队列,请先创建以个队列再执行该操作\n"); // ... } } } ``` 实验结果: 通过本实验,我们可以掌握队列的基本操作,包括进队、出队和输出队列中元素等操作。同时,我们也可以加深对队列结构的理解,逐步培养解决实际问题的编程能力。
- 粉丝: 4
- 资源: 10万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助