ZBLOG

一、问题描述一辆火车有n节车厢,车厢排列乱序,但整体车厢序号连续(序号整体没有断),每节车厢要停靠不同的站台。现有n个车站从1到n编号,火车按照从1到n的顺序经过车站,火车要在车厢号和车站号相同时,将车厢卸下,为了便于卸载,需要将车厢重新顺序排列。二、输入第一行输入车厢个数≥1——int型;第二行开始输入车厢入队次序≥1——int型;三、输出第一行输出火车车厢重排后出站顺序。#include using namespace std; #define QueueMax 1...

以下是补全后的代码:

#include<iostream>
using namespace std;

#define QueueMax 100

typedef struct QNode {
    int data; // 数据域
    struct QNode* next; // 指针域
}QNode, * QueuePtr;

typedef struct LinkQueue {
    QueuePtr front; // 头指针,指向列队列头指针
    QueuePtr rear; // 尾指针,指向了队列最后一个结点
}LinkQueue;

void InitQueue(LinkQueue& Q) { // 链队列初始化
    Q.front = Q.rear = new QNode;
    Q.front->next = NULL;
}

void DestroyQueue(LinkQueue& Q) { // 如果链队列为空,则销毁该空链队列
    if (Q.front == Q.rear)
        delete Q.front;
}

void GetTail(LinkQueue Q, int& e) { // 取链队列的队尾元素值
    if (Q.front->next == NULL)
        e = 0;
    else
        e = Q.rear->data;
}

void GetHead(LinkQueue Q, int& e) { // 取链队列的队头元素值
    if (Q.front->next == NULL)
        return;
    else
        e = Q.front->next->data;
}

void EnQueue(LinkQueue& Q, int e) { // 插入一个数据域值为e的结点到链队列Q中,成为新的队尾结点
    
}

void DeQueue(LinkQueue& Q, int& e) { // 链队列出队
    
}

void InSerch(LinkQueue arr[], int& curnum, int e) {
    int i, tail;
    GetTail(arr[0], tail);
    if (e == tail + 1)
        EnQueue(arr[0], e);
    else {
        for (i = 1; i < curnum; i++) {
            GetTail(arr[i], tail);
            if (e > tail) {
                EnQueue(arr[i], e);
                break;
            }
            else
                continue;
        }
        if (i == curnum) {
            InitQueue(arr[curnum]);
            EnQueue(arr[curnum], e);
            curnum++;
        }
    }
}

void OutSerch(LinkQueue arr[], int curnum, int n) { // 全部队列按顺序进入出火车站的队列中arr[0]中
    
}

int main() {
    int i, n, tr;
    int qnum, head;
    
    cin >> n;
    
    LinkQueue ql[QueueMax];
    
    InitQueue(ql[0]); // 0号队列用来作为出站的队列
    
    qnum = 1;
    
    for (i = 0; i < n; i++) {
        cin >> tr;
        InSerch(ql, qnum, tr);
    }
    
    OutSerch(ql, qnum, n);
    
    for (i = 0; i < n; i++) {
        DeQueue(ql[0], head);
        cout << head << " ";
    }

return 0;

}

希望对你有所帮助!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=13162

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?