我的想法是讓這個程序首先將數字(從1001開始)排列到10循環,但同時每兩次循環。我希望它刪除第一個數字插入。然後它繼續插入最後一個數字插入後的數字。例如。 (0)插入1001,(1)插入1002,(2)刪除1001,(3)插入1003,(4)插入1004,(5)刪除1002.這是我想象的和慾望輸出。但現在。當它刪除它重置爲初始數字。爲什麼數組不能繼續插入最後一個數字?
#include <stdio.h>
#define MAX 10 /* The maximum size of the queue */
#include <stdlib.h>
void insert(int queue[], int *rear, int value)
{
if(*rear < MAX-1)
{
*rear= *rear +1;
queue[*rear] = value;
printf("\n%d queue at counter 1",value);
}
else
{
printf("\nThe queue is full can not insert a value\n");
exit(0);
}
}
void delete(int queue[], int *front, int rear, int * value)
{
if(*front == rear)
{
printf("\nThe queue is empty can not delete a value\n");
exit(0);
}
*front = *front + 1;
*value = queue[*front];
printf("\n%d left counter 1",*value);
}
int main()
{
int queue[MAX];
int iCounter,front,rear,loop=0,a,b,c;
front=rear=-1;
a=1001;
do{
printf("\n------------------------------");
printf("\n\tWelcome!!\n");
printf("\n------------------------------");
printf("\nPress which counter you prefer");
printf("\n1-Pay bill");
printf("\n2-Check up");
printf("\n3-QnA");
printf("\n------------------------------\n");
scanf(" %d",&iCounter);
loop++;
switch(iCounter)
{
case 1:
insert(queue,&rear,a);
a++;
break;
default:
printf("\nError input!");
break;
}
while(loop==2)
{
delete(queue,&front,rear,&a);
loop=0;
}
}while(rear<MAX-1);
return 0;
}
你能傳遞一個爲通什麼請重寫你的解釋,這不是很具描述性,我很難理解你想說什麼。 –
在插入函數中也包含front,因爲最初的第一個元素應該設置爲0. – sas
我沒有看到你的程序試圖完成什麼。你只需要向前和向後計數,所以在最多10次調用「insert」之後,你將無法添加另一個,因爲在刪除中你從不減少後部,你只需向前計數......同樣,如果你刪除了某個東西再次設置爲第一個值。所以下一個增值將是你刪除的那個。這是打算? –