该楼层疑似违规已被系统折叠隐藏此楼查看此楼
#defineMAX10/*规定队列中可存放的字节数,[1~254]*/
typedefenum{FALSE,TRUE}boolean;
booleanSaveNumber(
unsignedchar*q,
unsignedchar*front,
unsignedchar*rear,
unsignedchar*ch);
booleanDelNumber(
unsignedchar*q,
unsignedchar*front,
unsignedchar*rear,
unsignedchar*ch);
intmain(){
unsignedcharQueue[MAX+1],front=0,rear=1,c;
charch;
boolean(*pntr[2])(
unsignedchar*,unsignedchar*,
unsignedchar*,unsignedchar*)={SaveNumber,DelNumber};
constchar*Message[]={
/*0*/"Number%dsavedsuccessfully.",
/*1*/"\nGet%ufromtheQueue.\n",
/*2*/"Failed.",
/*3*/"[1]SaveanumberintoQueue.",
/*4*/"[2]GetandDeleteanumberfromQueue.",
/*5*/"[3]Exit.",
};
do{
clrscr();
printf("%s\n",Message[3]);
printf("%s\n",Message[4]);
printf("%s\n",Message[5]);
printf("Select:");
switch(ch=getche()){
inti;
case'1':
printf("\nInputanumberbetween0and255:");
scanf("%d",&i);
c=i;
case'2':
ch-=49;
break;
case'3':
return(0);
default:continue;
}
if(pntr[ch](Queue,&front,&rear,&c))printf(Message[ch],c);
elseprintf(Message[2]);
printf("\nPressanykey...");
getch();
}while(1);
}
booleanSaveNumber(q,front,rear,ch)
unsignedchar*q,*front,*rear,*ch;
{
if(*front==*rear){
printf("Sorry,theQueueisfull.\n");
return(FALSE);
}else{
q[*rear]=*ch;
*rear=(*rear+1)%(MAX+1);
return(TRUE);
}
}
booleanDelNumber(q,front,rear,ch)
unsignedchar*q,*front,*rear,*ch;
{
if((*front+1)%(MAX+1)==*rear){
printf("\nSorry,theQueueisempty.\n");
return(FALSE);
}else{
*front=(*front+1)%(MAX+1);
*ch=q[*front];
return(TRUE);
}
}