m0_69836402 2022-04-18 22:13 采纳率: 100%
浏览 56
已结题

求详细解释每行每行!代码的意思,越详细越好

这个是题目:

img

第一小题代码:

img

第二小题:

img

img

一定要详细一点,这是王晓东版数据结构的练习题,我基础差,看不懂什么意思,请把每行代码是什么意思和作用详细说清楚,辛苦了

  • 写回答

2条回答 默认 最新

  • 关注

    功能第一张图里已经告诉你了啊,你哪个地方看不明白呢
    一会加个注释给你

    
    
    
    //把Q分成两个队列,第1/3/5元素放在Q2中,其余放在Q1中
    void QueueSplit(Queue &Q1,Queue &Q2,Queue Q)
    {
        QueueFree(Q1); //释放Q1的空间,这里是避免Q1中有数据,所以先把Q1清空
        QueueFree(Q2); //释放Q2的空间,这里是避免Q2中有数据,所以先把Q2清空
    
        //front是队列的头节点,next是头节点的下一个节点,rear是队列的尾结点
    
        while(Q->front) //如果前一个节点不为0
        {
            if(Q1->front) Q1->rear->next = Q->front; //如果Q1队列的头节点不为0,就把Q队列的头节点插入Q1的尾部
            else Q1->front = Q->front; //如果Q1队列的头结点为0,说明Q1队列为空,就把Q队列的头结点作为Q1队列的头结点
    
            Q1->rear = Q->front; //把Q1的尾结点设为Q队列的头节点(也是Q1中新插入的节点)
    
            Q->front = Q->front->next; //Q队列的头结点后移,把下一个节点作为Q队列的新的头节点
            if(Q->front) //如果Q队列的头结点不为0
            {
                if(Q2->front) Q2->rear->next = Q->front; //如果Q2队列的头节点不为0,就把Q队列的头节点插入Q2的尾部
                else Q2->front = Q->front;//如果Q2队列的头结点为0,说明Q2队列为空,就把Q队列的头结点作为Q2队列的头结点
    
                Q2->rear = Q->front; //把Q2的尾结点设为Q队列的头节点(也是Q2中新插入的节点)
    
                Q->front = Q->front->next;//Q队列的头结点后移,把下一个节点作为Q队列的新的头节点
            }
        }
        //Q队列中的元素全部出队后,把Q1和Q2的末尾节点的下一个节点设为0,以便在遍历队列的时候能够正确的结束
        if(Q1->rear) Q1->rear->next = 0;
        if(Q2->rear) Q2->rear->next = 0;
    }
    
    举个例子,假设Q中的元素是 1 2 3 4 5 6 7
    初始的时候,Q1和Q2都是空队列(Q1->front= Q1->rear=0,Q2->front= Q2->rear=0),Q->front指向1这个节点,Q->rear指向7这个节点,Q->front->next是指向节点2
    开始while循环:
    Q->front指向节点1,Q1->front = 0,执行else语句,把Q->front这个节点设为Q1的头节点,也就是Q1->front = Q->front,然后把Q1队列的尾结点也设置为Q->front,
    也就是Q1->front和Q1->rear都指向了节点1
    
    Q->front = Q->front->next这里,Q队列后移一位,节点2称为Q队列的新头节点
    
    下面的if else也是一个逻辑,一次while循环,把Q队列的第一个元素插入Q1的队尾,把Q队列的第2个元素插入Q2的队尾,以此类推,直到Q队列的所有元素全部被插入Q1和Q2
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 已采纳回答 4月18日
  • 创建了问题 4月18日

悬赏问题

  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄