📄 emp8_18.cpp
字号:
#include"grary1.h"
const int n=15, NilP=0, hhl=30, nhl=20;
int i,Head,Null;
ArrPtr HeadP,NullP;
GrpArr ag;
int next(GrpArr& ,int i)
{ int next=elmn(ag,i) ;
return next;
}
void disp_links(GrpArr& ag,int hd,int hl)
{
int p;
p=hd;
while (p!=NilP)
{ if (next(ag,p)<p)
elmn_ptr_elmn(ag,p,-hl);
else
elmn_ptr_elmn(ag,p,hl);
p=next(ag,p);
}
}
void Disp_Static_LList(GrpArr& ag,int head)
{
int i,x1,y1,x2,y2;
GrpArr_range(ag,x1,y1,x2,y2);
Clear_range(x1-30,y1-30,x2+30,y2+30);
display_GrpArr(ag);
disp_links(ag,Head,hhl);
disp_links(ag,Null,nhl);
Arrptr_point_to(NullP,ag,Null);
Arrptr_point_to(HeadP,ag,Head);
}
void NewP(int& P)
{ if (Null==NilP)
Error("No memory");
else
{ P=Null;
Null=next(ag,Null);
}
}
void DisposeP(int& P)
{
put_elmn(ag,P,Null,0);
Null=P;
}
int Get_Elmn( GrpArr& ag,int head,int i)
{ int Get_Elmn;
int j,jp;
jp=Head;
j=1;
while ( (j!=i)&&(jp!=NilP) )
{
jp=next(ag,jp);
j=j+1;
}
Get_Elmn=jp;
return Get_Elmn;
}
void SetNull_Static_LList( GrpArr& ag,int& head)
{int i;
clear_GrpArr(ag);
for (i=1;i<=n-1;i++)
put_elmn(ag,i,i+1,0);
head=NilP;
Null=1;
}
void Insert_Static_LList( GrpArr& ag,int& head,int i,int x)
{
int p,q;
if (i==1)
{
NewP(q);
put_elmn(ag,q,head,0);
head=q;
}
else
{
p=Get_Elmn(ag,head,i-1);
if (p==NilP)
Error("No. error");
else
{
NewP(q);
put_elmn(ag,q,next(ag,p),0);
put_elmn(ag,p,q,0);
}
}
}
void Delete_Static_LList(GrpArr& ag,int& head,int& x)
{
int p,q;
if (head==NilP)
Error("no data to delete");
else
if (i==1)
{ q=head;
head=elmn(ag,q);
DisposeP(q);
}
else
{
p=Get_Elmn(ag,head,i-1);
if ( (p==NilP)||(next(ag,p)==NilP) )
Error("No. error");
else
{
q=next(ag,p);
put_elmn(ag,p,next(ag,q),NilP);
DisposeP(q);
}
}
}
main()
{
bb1 b;
int i,j,sele,x;
char ch;
create_grp_Arrbb(ag,HorOrLev(1),(d_or_i)1,true,b,"Static LList",1,n);
initial_GrpArr(ag);
move_GrpArr_mid(ag,getmaxx()/2,getmaxy()/2);
create_arrptr(HeadP,"head",ag,-40);
create_arrptr(NullP,"NullP",ag,40);
SetNull_Static_LList(ag,Head);
Disp_Static_LList(ag,Head);
do
{
Inputintinwnd(10,3,50,"1: insert, 2:delete, 0: quit: ",sele);
switch(sele)
{
case 1: {
Inputintinwnd(10,4,50,"No. of insert: ",i);
Inputintinwnd(10,5,50,"Data to insert: ",x);
Insert_Static_LList(ag,Head,i,x);
} break;
case 2: {
Inputintinwnd(20,4,50,"data to delete: ",i);
Delete_Static_LList(ag,Head,i);
};break;
case 0: break;
}
Disp_Static_LList(ag,Head);
}
while(sele!=0);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -