这个程序有什么问题?
#include<stdio.h>#include<stdlib.h>
int main()
{
int i,j,k;
bool flag=1; /*PageError flag*/
int cnt=0; /*Stack NO. */
int PageFault=0; /*Total PageError*/
int STACK_SIZE=3; /*the size of the stack*/
int QUEUE_MAX=0; /*the max size of the Queue*/
printf("Input the size of the stack:\n");
scanf("%d",&STACK_SIZE);
int *Stack=(int *)malloc(STACK_SIZE*sizeof(int)); /*the stack*/
int *Queue=(int *)malloc(sizeof(int)); /*the Page_Queue8*/
printf("Input the queue(Enter ctrl+d to end)\n");
while(scanf("%d",&k)!=NULL)
{
Queue[QUEUE_MAX++]=k;
realloc(Queue,(QUEUE_MAX+1)*sizeof(int));
}
/* int Queue[QUEUE_MAX]={4,3,2,1,4,3,5,4,3,2,1,5}; */
system("CLS");
printf("Output:\n");
for(i=0;i<STACK_SIZE;i++)
{
Stack[i]=Queue[i];
printf("Stack %d:\n",++cnt);
for(j=i;j>=0;j--)
printf("%d\n",Stack[j]);
if(flag){
printf("\tPageFault!\n");
PageFault++;}
}
for(;i<QUEUE_MAX;i++)
{
for(k=0;k<STACK_SIZE;k++)
{
if(Stack[k]==Queue[i])
{
flag=0;
for(j=k;j<STACK_SIZE-1;j++)
Stack[j]=Stack[j+1];
Stack[j]=Queue[i];
break;
}
else
continue;
}
if(k>=STACK_SIZE)
{
flag=1;
for(j=0;j<STACK_SIZE-1;j++)
Stack[j]=Stack[j+1];
Stack[j]=Queue[i];
}
printf("Stack %d:\n",++cnt);
for(j=STACK_SIZE-1;j>=0;j--)
printf("%d\n",Stack[j]);
if(flag)
{
printf("\tPageFault!\n");
PageFault++;
}
}
printf("Total PageFault:%d\n",PageFault);
free(Stack);
free(Queue);
return 0;
}