|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 猪头少年.zm 于 2023-2-20 07:43 编辑
这个就是一个非常简单的排队代码
先按照病情的严重进行排队,然后才按照先来后到的顺序进行排队。
如题所示,想问一下大佬们,为什么这个rank123函数跑不起来
- #define MaxSize 100
- #include <stdio.h>
- #include<string.h>
- #include<stdlib.h>
- #include<iostream>
- using namespace std;
- typedef struct LNode
- {
- char condition;
- int line;
- string name;
- struct LNode* next;
- }LNode,*LinkList;
- typedef struct
- {
- LNode* rear, * front;
- LNode* find;
- }LinkQueue;
- void InitQueue(LinkQueue& L)
- {
- L.find = L.rear = L.front = (LNode*)malloc(sizeof(LNode));
- L.front->next = NULL;
- }
- void EnQueue(LinkQueue& L, char x,int l) //x表示病情的轻重缓急 i表示第几个来的
- { //x有轻微(slight用s表示),中等(medium用m表示),严重(heavy用h表示)
- LNode* q = (LNode*)malloc(sizeof(LNode));
- q->condition = x;
- q->line = l;
- q->next = NULL;
- L.rear->next = q;
- L.rear = q;
- }
- bool DeQueue(LinkQueue& L, char x, int l)
- {
- LNode* p = L.front->next;
- if (L.rear == L.front)
- {
- return false;
- }
- x = p->condition;
- l = p->line;
- printf("%c ", x);
- printf("%d ", l);
- L.rear->next = p->next;
- if (L.rear == p)
- {
- L.rear = L.front;
- }
- free(p);
- return true;
- }
- void rank123(LinkQueue& L)
- {
- if (L.front == L.rear)
- {
- cout << "当前无人排队" << endl;
- return;
- }
- LNode *Q =(LNode*)malloc(sizeof(LNode));
- LinkQueue P = L;
- while (L.find != NULL)
- {
- L.find = L.find->next;
- if (L.find->condition == 'h')
- {
- if (L.find = L.front->next)
- {
- }
- else
- {
- Q->condition = L.find->condition;
- Q->line = L.find->line;
- L.find->condition = P.front->next->condition;
- L.find->line = P.front->next->line;
- P.front->next->condition = Q->condition;
- P.front->next->line = Q->line;
- L.find = L.find->next;
- P.find = P.find->next;
- }
- }
- }
- L.find = L.front;
- while (L.find != NULL)
- {
- L.find = L.find->next;
- if (L.find->condition == 'l')
- {
- Q->condition = L.find->condition;
- Q->line = L.find->line;
- L.find->condition = P.front->next->condition;
- L.find->line = P.front->next->line;
- P.front->next->condition = Q->condition;
- P.front->next->line = Q->line;
- L.find = L.find->next;
- P.find = P.find->next;
- }
- }
- L.find = L.front;
- while (L.find != NULL)
- {
- L.find = L.find->next;
- if (L.find->condition == 's')
- {
- Q->condition = L.find->condition;
- Q->line = L.find->line;
- L.find->condition = P.front->next->condition;
- L.find->line = P.front->next->line;
- P.front->next->condition = Q->condition;
- P.front->next->line = Q->line;
- L.find = L.find->next;
- P.find = P.find->next;
- }
- }
- }
- void print(LinkQueue& L)
- {
- while(L.front != L.rear)
- {
- printf("%d ", L.front->line);
- }
- }
- char sickness(char illness)
- {
- cout << "请输入您的病情(请用h,s,l表示)" << endl;
- cin >> illness;
- if (illness != 'h' && illness != 's' && illness != 'l')
- {
- cout << "请按照要求进行输入" << endl;
- sickness(illness);
- }
- return illness;
- }
- int menu(int &j)
- {
- cout << "1.排队取号" << endl;
- cout << "2.查询当前队伍状况" << endl;
- cout << "请输入您要办理的业务" << endl;
- cin >> j;
- if (j != 1 && j != 2)
- {
- cout << "请按要求进行输入" << endl;
- menu(j);
- }
- return j;
-
- }
- int main()
- {
- LinkQueue Q;
- InitQueue(Q);
- int i = 0; //所有的值都要进行初始化,以便后面进行调用
- int j = 0; //j是主菜单的返回值
- char situation ='a';
- char illness ='a';
- while (1)
- {
- menu(j);
- if (j == 1)
- {
- sickness(illness); //sickness函数是对illness进行赋值并判断是否合法的一个函数
- EnQueue(Q, illness, i+1);
- i++;
- }
- else
- {
- rank123(Q);
- print(Q);
- }
- }
- }
复制代码 |
|