我是大二 老師出的作業 可以麻煩高手幫解答嗎
我的想法是 把下面用到%的地方改一改就能變佇列
這想法有錯嗎???但我不知怎改!麻煩大大們說名一下 #include
#include
#define N 10
void createq(int[], int*, int*);
void showfront(int[], int, int);
void add(int[], int*, int*, int);
void del(int[], int*, int*);
void showqueue(int[], int, int);
int main(void) {
int queue[N];
int front, rear;
int input, select;
createq(queue, &front, &rear);
while(1) {
printf("\n\n請輸入選項(-1結束):");
printf("\n(1)插入值至佇列");
printf("\n(2)顯示佇列前端");
printf("\n(3)刪除前端值");
printf("\n(4)顯示所有內容");
printf("\n$c>");
scanf("%d", &select); if(select == -1)
break;
switch(select) {
case 1:
printf("\n輸入值:");
scanf("%d", &input);
add(queue, &front, &rear, input);
break;
case 2:
showfront(queue, front, rear);
break;
case 3:
del(queue, &front, &rear);
break;
case 4:
showqueue(queue, front, rear);
break;
default:
printf("\n選項錯誤!");
}
}
printf("\n");
return 0;
}
void createq(int queue[], int* front, int* rear) {
int i;
for(i = 0; i < N; i )
queue[i] = 0;
*front = *rear = 0;
}
void showfront(int queue[], int front, int rear) {
if(front == rear)
printf("\n佇列為空!");
else
printf("%d", queue[(front 1) % N]);
}
void add(int queue[], int* front, int* rear, int data) {
int f, r;
f = *front;
r = *rear;
r = (r 1) % N;
if(f == r) {
printf("\n佇列已滿!");
return;
}
queue[r] = data;
*rear = r; }
void del(int queue[], int* front, int* rear) {
int f, r;
f = *front;
r = *rear;
if(f == r) {
printf("\n佇列為空!");
return;
}
f = (f 1) % N;
*front = f;
}
void showqueue(int queue[], int front, int rear) {
int i;
printf("\n佇列內容:");
for(i = (front 1) % N; i <= rear; i )
printf("%d ", queue[i]);
}