【发布时间】:2020-12-17 19:51:21
【问题描述】:
注意:代码 sn-ps 可能无法用于演示我的想法。
我正在尝试在 c 中复制银行队列,但非常基本。我是 C 新手,我真的在这里寻求帮助。
所以我希望完成 3 个主要任务。
- 插入客户。
- 正在删除客户。
- 显示排队的客户列表。
对于1,我想出了这个主意:
int pri_que[MAX];
int front, rear;
void insert(char data){
if (rear >= MAX - 1){
printf("\nQueue is full.");
return;
}
if ((front == -1) && (rear == -1)){
front++;
rear++;
pri_que[rear] = data;
return;
}
else{
check(data);
}
rear++;
}
然后我有check 函数
void check(char data) {
int i,j;
for (i = 0; i <= rear; i++) {
if (data >= pri_que[i]) {
for (j = rear + 1; j > i; j--) {
pri_que[j] = pri_que[j - 1];
}
pri_que[i] = data;
return;
}
}
pri_que[i] = data;
}
del 函数
void del(char data) {
int i;
if ((front==-1) && (rear==-1)) {
printf("\nQueue is empty ");
return;
}
for (i = 0; i <= rear; i++) {
if (data == pri_que[i]) {
for (; i < rear; i++) {
pri_que[i] = pri_que[i + 1];
}
pri_que[i] = -99;
rear--;
if (rear == -1)
front = -1;
return;
}
}
printf("\n%d not found in queue to delete", data);
}
最后是show 函数。
void show() {
if ((front == -1) && (rear == -1)) {
printf("\nQueue is empty");
return;
}
for (; front <= rear; front++) {
printf(" %d ", pri_que[front]);
}
front = 0;
}
顺便说一下,我想向等待的客户展示这样的:
1 - James
2 - Jacop
3 - Sarah
【问题讨论】:
-
那么,您认为使用多少优先级?例如,是否会有一个 MAXIMUM 优先级,比如 10?
-
MAX_SIZE 10 好
-
您甚至没有主要代码让我知道您要准确实现什么算法。您实际上如何优先考虑名称?例如。主要是您要求输入名称的优先级还是仅按升序排列?更多细节让您获得更多帮助。
标签: c queue priority-queue