数据结构与算法实验-栈和队列(3)

一、实验目的

掌握链队的存储结构和掌握链队中各种基本运算算法的设计。

掌握队列应用的算法设计。

二、实验环境(仪器设备、软件等)

5-208机房计算机

Visual Studio 2022

Win10系统

三、实验原理(或要求)

选择一道并完成编程。

【1】编写程序liqueue.cpp,实现链队(假设队列中元素类型ElemType为char),并在主程序中进行测试其功能。

  1. 初始化链队q。
  2. 判断链队q是否非空。
  3. 依次进队元素a、b、c。
  4. 出队一个元素,输出该元素。
  5. 依次进队元素d、e、f。
  6. 输出出队序列。
  7. 释放链队。

【2】编写病人看病模拟程序

编写一个程序seeingdoctor.cpp,反映病人到医院排队看病的情况。在病人排队过程中,主要重复下面两件事。

  1. 病人到达诊室,将病历本交给护士,排到等待队列中候诊。

(2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。

要求:模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下:

1.排队——输入排队病人的病历号,加入病人排队队列中。

2.就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除。

3.查看排队——从队首到队尾列出所有排队病人的病历号。

4.不再排队,余下依次就诊——从队首到队尾列出所有排队病人的病历号,并退出运行。

5.下班——退出运行。

四、实验步骤

【1】编写程序liqueue.cpp,实现链队:

  1. 初始化链队q
    在程序中创建一个链队对象 LiQueue q;,即创建一个空的链队列。
  2. 判断链队q是否非空
    使用 isEmpty() 方法来判断队列是否为空,并输出结果。
  3. 依次进队元素a、b、c
    使用 enqueue() 方法依次将字符 ‘a’、‘b’、‘c’ 进队。
  4. 出队一个元素,输出该元素
    使用 dequeue() 方法出队一个元素,并将其输出。
  5. 依次进队元素d、e、f
    使用 enqueue() 方法依次将字符 ‘d’、‘e’、‘f’ 进队。
  6. 输出出队序列
    使用 dequeue() 方法逐个出队并输出元素,直到队列为空。
  7. 释放链队
    使用 destroyQueue() 方法释放链队的内存空间。

#include <iostream>

using namespace std;

// 定义节点结构体

struct Node {

    char data; // 存储字符数据

    Node* next; // 指向下一个节点

};

// 定义链队类

class LiQueue {

public:

    Node* front; // 队头指针

    Node* rear; // 队尾指针

    // 构造函数,初始化队列

    LiQueue() {

        front = rear = new Node(); // 创建头节点

        front->next = nullptr;

    }

    // 判断队列是否为空

    bool isEmpty() {

        return front == rear;

    }

    // 入队操作

    void enqueue(char e) {

        Node* newNode = new Node(); // 创建新节点

        newNode->data = e;

        newNode->next = nullptr;

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值