⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nibolan.txt

📁 逆波兰式的生成逆波兰式的生成逆波兰式的生成逆波兰式的生成逆波兰式的生成逆波兰式的生成
💻 TXT
字号:
 #include   <stdio.h>   
  #include   <stdlib.h>   
  #define   MAX   50   
  #define   n   10   
  #define   m   10   
  #define   blocklength   100   
    
  typedef   struct   
  {   
      int   flag;   
      int   page[n][2];   
      int   length;   
      int   stack[n];   
      int   slength;   
      int   rear;   
  }pbc;   
    
  pbc   a[MAX];   
  int   pbcnum=MAX;   
  int   MEM[m][m];   
  int   memnum;   
  int   I,J;   
    
  main()   
  {   
      void   init();   
      void   create();   
      void   lookp(int   num);   
      void   lookm();   
      void   help();   
      void   fifo_lru(char   type);   
      void   end();   
      void   search();   
      char   ch;   
      init();   
      do   
      {   
          printf("\nWhat   do   you   want   to   do?");   
          help();   
          printf("\nSELECT:     ");   
          ch=bioskey(0);printf("%c",ch);   
          switch(ch)   
          {   
              case'c':   
              case'C':   
                create();   
                break;   
              case'r':   
              case'R':   
  printf("\nFIFO   or   LRU.(f   or   l)\nAnswer:     ");   
  ch=bioskey(0);printf("%c",ch);   
  fifo_lru(ch);   
  break;   
              case'e':   
              case'E':   
  end();   
  break;   
              case'l':   
              case'L':   
  lookm();   
  break;   
              case'#':   
  printf("\nThe   END.");   
  sleep(1);   
  return;   
          }   
      }while(ch!='#');   
  }   
  void   end()   
  {   
      int   i,t,num,lt,pt,pn;   
      char   ch;   
      do   
      {   
          printf("\nInput   the   pbc   number:   ");   
          scanf("%d",&num);getchar();   
          if   (a[num].flag==0)   
          {   
              printf("\nThe   pbc   hasn't   create.");   
              sleep(1);   
              return;   
          }   
          for   (i=0;i<n;i++)   
          {   
              if   (a[num].page[i][0]!=0)   
              {   
  if   (a[num].page[i][0]%m==0)   
      MEM[(a[num].page[i][0]/m)-1][m-1]=0;   
  else   
      MEM[a[num].page[i][0]/m][(a[num].page[i][0]%m)-1]=0;   
  a[num].page[i][0]=0;   
  a[num].page[i][1]=0;   
              }   
              a[num].stack[i]=0;   
          }   
          a[num].length=0;   
          a[num].slength=0;   
          a[num].rear=-1;   
          a[num].flag=0;   
          printf("\nDo   you   want   end   another   PBC?\nAnswer:     ");   
          ch=bioskey(0);printf("%c",ch);   
      }while(ch!='n'   &&   ch!='N');   
  }   
  void   fifo_lru(type)   
  char   type;   
  {   
      int   i,t,num,lt,pt,pn;   
      char   ch;   
      printf("\nInput   the   pbc   number:   ");   
      scanf("%d",&num);getchar();   
      if   (a[num].flag==0)   
      {   
          printf("\nThe   pbc   hasn't   create.");   
          sleep(1);   
          return;   
      }   
      do   
      {   
          printf("\nInput   the   Logical   address.\nLogical   address:     ");   
          scanf("%d",&lt);       getchar();   
          pn=lt/blocklength;   
          if   (   pn   <   a[num].length   )   
          {   
              if   (a[num].page[pn][1]==1)   
              {   
  printf("\nThe   Physical   address:   %d",(a[num].page[pn][0])*blocklength+lt%blocklength);   
  if   (type=='l'   ||   type=='L')   
  {   
      i=0;   
      while(a[num].stack[i]!=pn)   
          i++;   
      for   (;i<a[num].rear;i++)   
          a[num].stack[i]=a[num].stack[i+1];   
      a[num].stack[a[num].rear]=pn;   
  }   
              }   
              else   
              {   
  printf("\nDiaoDu:");   
  if   (a[num].slength>a[num].rear+1)   
  {   
      search();   
      a[num].page[pn][0]=I*m+J+1;   
      a[num].page[pn][1]=1;   
      a[num].stack[++a[num].rear]=pn;   
                      printf("\nThe   Physical   address:   %d",(a[num].page[pn][0])*blocklength+lt%blocklength);   
  }   
  else   
  {   
                      a[num].page[a[num].stack[0]][1]=0;   
      a[num].page[pn][0]=a[num].page[a[num].stack[0]][0];   
                      for   (i=0;i<a[num].rear;i++)   
          a[num].stack[i]=a[num].stack[i+1];   
      a[num].page[pn][1]=1;   
      a[num].stack[a[num].rear]=pn;   
                      printf("\nThe   Physical   address:   %d",(a[num].page[pn][0])*blocklength+lt%blocklength);   
  }   
              }   
          }   
          else   
              printf("\Out   of   side.");   
          lookp(num);   
          printf("\nDo   you   want   input   another   Logical?\nAnswer:     ");   
          ch=bioskey(0);printf("%c",ch);   
      }while(ch!='n'   &&   ch!='N');   
      printf("\n\nPress   any   key   back   to   the   MENU.");   
      bioskey(0);   
  }   
  void   search()   
  {   
      if   (memnum!=0)   
      {   
          for   (I=0;I<m;I++)   
              for   (J=0;J<m;J++)   
  if   (MEM[I][J]==0)   
  {   
      MEM[I][J]=1;   
      return;   
  }   
      }   
      else   
          printf("\nThere   is   no   mem   left.");   
  }   
  void   lookm()   
  {   
      int   i,j;   
      clrscr();   
      for   (i=0;i<m;i++)   
      {   
          printf("\n");   
          for   (j=0;j<m;j++)   
              printf("%-2d",MEM[i][j]);   
      }   
      printf("\n\nPress   any   key   back   to   the   MENU.");   
      bioskey(0);   
  }   
  void   create()   
  {   
      int   i;   
      if   (pbcnum==0)   
      {   
          printf("\ncann't   create   any   more.");   
          sleep(1);   
          return;   
      }   
      else   
      {   
          pbcnum--;   
          i=0;   
          while(a[i].flag!=0)   
              i++;   
          a[i].flag=1;   
          printf("\nThe   <   %d   >   pbc   is   built.",i);   
          printf("\nInput   the   page's   length:     ");   
          scanf("%d",&a[i].length);   
          printf("Input   the   stact's   length:     ");   
          scanf("%d",&a[i].slength);   
      }   
      printf("\nPress   any   key   back   to   the   MENU.");   
      bioskey(0);   
  }   
  void   lookp(num)   
  int   num;   
  {   
      int   i;   
      if   (a[num].flag!=0)   
      {   
          printf("\nThe   page:     ");   
          for   (i=0;i<a[num].length;i++)   
              if   (a[num].page[i][1]!=0)   
  printf("\npage   <   %d   >   is   in   the   mem   %d.",i,a[num].page[i][0]);   
          printf("\nThe   stack:     ");   
          for   (i=0;i<=a[num].rear;i++)   
              printf("%d     ",a[num].stack[i]);   
      }   
      else   
      {   
          printf("\nThis   produce   hasn't   create.");   
          sleep(1);   
      }   
  }   
  void   help()   
  {   
      clrscr();   
      printf("\nC Create   a   produce.");   
      printf("\nR RUN   (FIFO   or   LRU).");   
      printf("\nE End   one   PBC.");   
      printf("\nL Look   MEM.");   
      printf("\n# End   one   demostration.");   
  }   
  void   init()   
  {   
      int   i,j;   
      for   (i=0;i<MAX;i++)   
      {   
          a[i].flag=0;   
          for   (j=0;j<n;j++)   
          {   
              a[i].page[j][0]=0;   
              a[i].page[j][1]=0;   
              a[i].stack[j]=0;   
          }   
          a[i].length=0;   
          a[i].slength=0;   
          a[i].rear=-1;   
      }   
      for   (i=0;i<m;i++)   
          for   (j=0;j<m;j++)   
              MEM[i][j]=0;   
      memnum=(m*m);   
  } 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -