void List :: print()
{
if(list==0)
cout<<"页表中无数据!"<<endl;
cout<<"页号 标志 主存块号 修改标志 磁盘地址"<<endl;
item *pt=list;
while(pt)
{
cout<<" "<<pt->page<<" "<<pt->sign<<" "<<pt->block<<" "<<pt->changesign<<" "<<pt->locate<<endl;
pt=pt->next;
}
cout<<endl;
}
int List::append(int p,int s,int b,int l)
{
item *pt=new item(p,s,b,l);
if(list==0)
list=pt;
else
{
(end())->next=pt;
}
return 1;
}
item *List::end()
{
item *prv,*pt;
for(prv=pt=list;pt;prv=pt,pt=pt->next)
;
return prv;
}
int List::insert(int p,int s,int b,int l)
{
item *pt=new item(p,s,b,l);
pt->next=list;
list=pt;
return 1;
}
int List::length()
{
int cnt=0;
item *pt=list;
for(;pt;pt=pt->next,cnt++)
;
return cnt;
}
int List::check(int p)
{
item *pt=list;
int a=-1;
for(;pt;pt=pt->next)
{
if(pt->page==p&&pt->sign==1)
a=pt->block;
}
return a;
}
void List::reverse()
{
item *pt,*prv,*tmp;
prv=NULL;
pt=list;
list=end();
while(pt!=list)
{
tmp=pt->next;
pt->next=prv;
prv=pt;
pt=tmp;
}
list->next=prv;
}
int checkp(int n);
int main()
{
int j=0;
List list(0,1,5,11);
list.append(1,1,8,12);
list.append(2,1,9,13);
list.append(3,1,1,21);
//list.append(4,0,-1,22);
//list.append(5,0,-1,23);
//list.append(6,0,-1,121);
j=list.length();