该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#define MAX 10 /*规定队列中可存放的字节数,[1~254]*/
typedef enum{FALSE,TRUE} boolean;
boolean SaveNumber(
unsigned char *q,
unsigned char *front,
unsigned char *rear,
unsigned char *ch);
boolean DelNumber(
unsigned char *q,
unsigned char *front,
unsigned char *rear,
unsigned char *ch);
int main(){
unsigned char Queue[MAX+1],front=0,rear=1,c;
char ch;
boolean (*pntr[2])(
unsigned char *,unsigned char *,
unsigned char *,unsigned char *)={SaveNumber,DelNumber};
const char *Message[]={
/*0*/"Number %d saved successfully.",
/*1*/"\nGet %u from the Queue.\n",
/*2*/"Failed.",
/*3*/"[1]Save a number into Queue.",
/*4*/"[2]Get and Delete a number from Queue.",
/*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()){
int i;
case '1':
printf("\nInput a number between 0 and 255:");
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);
else printf(Message[2]);
printf("\nPress any key...");
getch();
}while(1);
}
boolean SaveNumber(q,front,rear,ch)
unsigned char *q,*front,*rear,*ch;
{
if(*front==*rear){
printf("Sorry, the Queue is full.\n");
return(FALSE);
}else{
q[*rear]=*ch;
*rear=(*rear+1)%(MAX+1);
return(TRUE);
}
}
boolean DelNumber(q,front,rear,ch)
unsigned char *q,*front,*rear,*ch;
{
if((*front+1)%(MAX+1)==*rear){
printf("\nSorry, the Queue is empty.\n");
return(FALSE);
}else{
*front=(*front+1)%(MAX+1);
*ch=q[*front];
return(TRUE);
}
}