• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签:

资源简介

串联文件,连续文件的存储模拟 操作系统课程设计

资源截图

代码片段和文件信息

#include
#include
#include 
#include 
using namespace std;
class File
{
 public:
      virtual int * store(int *aint nint k)=0;
      virtual void show(int k)=0;
      virtual void select(int i)=0;
      virtual char * getName()=0;
 };
 

 class Series: public File
 {
  private:
      char fname[20];
      int fn;//存放文件大小
     struct Place
    {
      int lk;
      int pk;
      Place * next;
    };
    Place * pHead;
    Place * pEnd;
 public:
   Series(char * nameint n)
   {
    for(int i=0;i<20;i++)
      fname[i]=name[i];
    fn=n;
    pHead=new Place;
    pEnd=new Place;
    pHead=pEnd=NULL;
   }

   int * store(int *aint nint k);
   void show(int k);
   void select(int i);
   char * getName();
};
 char * Series::getName()
 {
  return fname;
 }
 int *  Series::store (int *aint nint k)
 {
   for(int i=0;i<=fn-1;i++)
   {
     Place * p=new Place;
     p->lk=k;
     p->pk=(int)(n*rand()/(RAND_MAX+1.0));
     p->next=NULL;
     while(a[p->pk]==1)
     {
      p->pk=(int)(n*rand()/(RAND_MAX+1.0));
     }
     if(pHead==NULL)
     {
       pHead=pEnd=p;
   a[p->pk]=1;
     }
     else
     {
       pEnd->next=p;
       pEnd=p;
   a[p->pk]=1;
     }
   }
   return a;
 }
 void  Series::show(int k)
 {
    cout<<“文件名称:               “<    cout<<“文件大小:                 “<    cout<<“文件的存储方式:            串联“< cout<<“该文件所占的内存物理块为:“;
   Place * p;
   p=pHead; 
   while(p)
   {
   if (p->lk==k)
   { 
   while(p&&p->lk==k)
   {
   cout<pk<<“   “;
   p=p->next ;
   }
   cout<    break;
   }
   else p=p->next ;
   }
    
   // cout<<“下一个指针指向的物理块号:              “<next->pk< }
 void  Series::select(int i)
 {
 int k=0;
   Place * p;
   p=pHead;
   while(p&&k   {
     p=p->next;
 k++ ;
   }
  if(p)  cout<<“该文件所在的物理块号是:     “<pk<  if(!p) cout<<“无“<     
  
 }
class Indexing: public File
{
 private:
    char fname[20];//存放文件名称
    int fn;//存放文件大小
    int f[50];//存放文件索引表
public:
  Indexing(char * nameint n)
  {
    int i;
    for( i=0;i<20;i++)
      fname[i]=name[i];
    fn=n;
    for( i=0;i<50;i++)
    f[i]=0;
  }
   int * store(int *aint nint k);
   void show(int k);
   void select(int i);
   char * getName();
  
};
 char * Indexing::getName()
 {
  return fname;
 }
int * Indexing::store (int *aint nint k)
{
    for(int i=0;i    {
        f[i]=(int)(n*rand()/(RAND_MAX+1.0));
        while(a[f[i]]==1)
        {
          f[i]=(int)(n*rand()/(RAND_MAX+1.0));
        }
        a[f[i]]=1;
    }
return a;
}
 void Indexing::show(int k)
 {
    cout<<“文件名称:                “<    cout<<“文件大小:               “<    cout<<“文件的存储方式:           索引“<    cout<<“文件对应索引表如下所示:“<    cout<<“逻辑块号              物理块号“<    for(int i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5336  2010-01-25 12:33  c.cpp

----------- ---------  ---------- -----  ----

                 5336                    1


评论

共有 条评论