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

📄 grary11.h

📁 该包是数据结构的实验软件,来源于合肥工业大学人工智能与数据挖掘实验室,用来实现数据结构.
💻 H
📖 第 1 页 / 共 4 页
字号:
	  Put_elmn(ag,i,p->v,0);
	  Getkey(key,funckey);
      }
  void Move_grparr_var (  VarPtr& p,GrpArr& ag,int i)
      {int x,y,x1,y1,hh;
       if ((p->vx==-1) && (p->vy==-1))
	    Join_varptr_grparr(p,ag,i);
	  Vcrds(p,ag,1,i);
	  p->v=Elmn(ag,i);
	  Disp_varptr_data(p,ag);
	  Getkey(key,funckey);
     }
  void Put_elmn(  GrpArr& ag,int i,datatype v,int hl)
     { int x1,y1,x2,y2,lenv,sg;string ss;
      Disnodedat(ag,i);
      Fifild(ag,i,1);
      * Grp_elmn_ptr(ag,i)=v;
	 // {point_to(p,i,ag);}
	// {v-->}
     Coordtwo(ag,i,hl,x1,y1,x2,y2);
       sg=Sgn(0,hl);

       if (hl!=0)
	{Arrow(x2,y2,x1,y1);
	 Convs(v,st);
	 lenv=strlen(st)*8/2*sg;
	  outtextxy(x2+(1-ag.ho_lev)*lenv,y2+ag.ho_lev*6*sg,st);
	}
	*Grp_elmn_ptr(ag,i)=v;
	 Trace1();
	 Disnodedat(ag,i);
	 Trace1();
     }
  boolean Cmp_elmn(  GrpArr& ag,int i,int j,string op,int hl)
       {int x1,y1,x2,y2,x3,y3,x4,y4;
       boolean cmp_elmn;
       datatype v1,v2;
       boolean cmp;
       Disnodedat(ag,i);
       Disnodedat(ag,j);
       Fifild(ag,i,1);
       Fifild(ag,j,1);
       Trace1();
       Coordtwo(ag,i,hl,x1,y1,x2,y2);
       Arrow(x2,y2,x1,y1);
       Coordtwo(ag,j,hl,x3,y3,x4,y4);
       Arrow(x4,y4,x3,y3);
       //{line(x2,y2,x4,y4);}
       Trace1();
       Disnodedat(ag,i);
       Disnodedat(ag,j);
       v1=Elmn(ag,i);
       v2=Elmn(ag,j);
       cmp=(boolean)((!strcmp(op,"=")) && (v1==v2) || (!strcmp(op,">")) && (v1>v2));
       cmp=(boolean)(cmp ||(!strcmp(op,"<"))&&(v1<v2)||(!strcmp(op,"<>")) &&(v1!=v2));
       cmp=(boolean)(cmp || (!strcmp(op,"<=")) && (v1<=v2) ||(!strcmp(op,">=")) && (v1>=v2));
       cmp_elmn=cmp;
	    return cmp_elmn; //{ write(cmp);}
     }
  void Move_elmn(  GrpArr& ag,int i,int j,int hl)
     {int  x1,y1,x2,y2,x3,y3,x4,y4;
      Disnodedat(ag,i);
      Fifild(ag,i,1);
      Disnodedat(ag,j);
      Fifild(ag,j,1);
      Trace1();
       *Grp_elmn_ptr(ag,j)=Elmn(ag,i);
       Coordtwo(ag,i,hl,x1,y1,x2,y2);
       Arrow(x1,y1,x2,y2);
       Coordtwo(ag,j,hl,x3,y3,x4,y4);
       Arrow(x4,y4,x3,y3);
       line(x2,y2,x4,y4);
       Disnodedat(ag,j);
       Fifild(ag,j,1);
       Trace1();
       Fifild(ag,i,1);
       Fifild(ag,j,1);
     }
 void Xchg_elmn(  GrpArr& ag,int i,int j,int hl)
     {int   x1,y1,x2,y2,x3,y3,x4,y4;
      datatype te;
	 Disnodedat(ag,i);
	 Disnodedat(ag,j);
	 Fifild(ag,i,1);
	 Fifild(ag,j,1);
	 Coordtwo(ag,i,hl,x1,y1,x2,y2);
	 Arrow(x2,y2,x1,y1);
	 Coordtwo(ag,j,hl,x3,y3,x4,y4);
	 Arrow(x4,y4,x3,y3);
	 line(x2,y2,x4,y4);
	 Trace1();


	   te=Elmn(ag,i);
	   *Grp_elmn_ptr(ag,i)=Elmn(ag,j);
	   *Grp_elmn_ptr(ag,j)=te;
	   Disnodedat(ag,i);
	   Disnodedat(ag,j);
	   Fifild(ag,i,1);
	   Fifild(ag,j,1);
	   Trace1();
	   Fifild(ag,i,1);
	   Fifild(ag,j,1);

     }

 void Dec(int&  x,int n)
 { x=x-n;
 }

 void Inc(int& x,int n)
 { x=x+n;
 }


  void Elmn_ptr_elmn(  GrpArr& ag,int i,int hl)
      {int  x1,y1,x2,y2,x3,y3,x4,y4,j,dh,dw;
	datatype te;
	j=Elmn(ag,i);
	if (j<Sub1(ag))
	    exit(0);
	Coordtwo(ag,i,hl,x1,y1,x2,y2);
	Coordtwo(ag,j,hl,x3,y3,x4,y4);
	Coord(ag,i,x1,y1);
	   dh=Elmnhigh(ag)/4;
	   dw=Elmnwidth(ag)/4;
	   if (Hor_vert(ag)==horizon )
	      if (x1<x3)
		 {    Dec(x3,dw);
		      Dec(x4,dw);
		  }
	       else
		    { Inc(x3,dw);
		      Inc(x4,dw);
		      }
	   else
		if (y1<y3)
		 { Dec(y3,dh);
		   Dec(y4,dh);
		  }
		else
		   { Inc(y3,dh);
		     Inc(y4,dh);
		     }
	   x1=x1+ag.w/2;
	   y1=y1+ag.h/2;
	   Arrow(x1,y1,x2,y2);
	   line(x2,y2,x4,y4);
	   Arrow(x4,y4,x3,y3);

/*{                     coordtwo(ag,i,p^.hl,ix,iy,ixl,iyl);
		     ixl:=ixl+d*ho_lev*w div 4;iyl:=iyl+d*(1-ho_lev)*h div 4;
		     ix:=ix+d*ho_lev*w div 4;  iy:=iy+d*(1-ho_lev)*h div 4;
		     if d=-1 then Arrow(ixl,iyl,ix,iy)
			     else Arrow(ix,iy,ixl,iyl);
}  */

     }

  void Initial_arr1(  GrpArr& ag)
     {int may;

	//setbkcolor(BLUE);
	setcolor(WHITE);// DIRECTVIDEO:=FALSE;
	setfillpattern(fillmode,fillcolor);
	     if( ag.havefd)
		  farfree(ag.datafild[ag.fdsub]);
		  ag.havefd=true;
		  ag.fdsub=ag.ho_lev;
		  bar(1,1,ag.w-2,ag.h-2);
		  ag.size=imagesize(1,1,ag.w-2,ag.h-2);
		  ag.datafild[ag.ho_lev]=malloc(ag.size);
		  getimage(1,1,ag.w-2,ag.h-2,ag.datafild[ag.ho_lev]);
		  putimage(1,1,ag.datafild[ag.ho_lev],1);
		  ag.dx=ag.ho_lev*ag.w;
		  ag.dy=(1-ag.ho_lev)*ag.h;

      }
  void Initial_arr2( GrpArr& ag)
     {
	   /*if (ag.ho_lev==0)
	      { ag.dx=0;ag.dy=16;ag.h=ag.dy;ag.w=30; }
	   else
	     { ag.dx=step;ag.dy=0;ag.h=30;ag.w=ag.dx; }
	    */
	      Initial_arr1(ag);
	      window(1,1,80,3);
	      textcolor(WHITE);
	     //{ textbackground(BLACK);}


	     ag.sx=25*(1+ag.decinc)+(getmaxx()-100)*(ag.ho_lev+50)/2*(1-ag.decinc);

	     ag.sy=25*(1+ag.decinc)+((getmaxy()-100)*(1-ag.ho_lev)+50)/2*(1-ag.decinc) ;

       }
  void Initial_grparr( GrpArr& ag)
     {  Initial_arr2(ag) ;  }
  int Sx1(  GrpArr& ag)
     { int sx1=ag.sx;
       return sx1; }
  int Sy1( GrpArr& ag)
     {int sy1=ag.sy;
      return sy1;
      }
  int Elmnhigh( GrpArr& ag)
     { int elmnhigh=ag.h;
       return elmnhigh;
       }
  int Elmnwidth(  GrpArr& ag)
     { int elmnwidth=ag.w;
       return elmnwidth;
       }
  void Setelmnsize(  GrpArr& ag,int hh,int ww)
     { //with ag do
      ag.h=hh;
      ag.w=ww;
       }
  int Sub1( GrpArr& ag)
     { int sub1=ag.sub1;
       return sub1;
       }
  int Sub2(  GrpArr& ag)
     { int sub2=ag.sub1+ag.count-1;
       return sub2;
       }
  HorOrLev Hor_lev(  GrpArr& ag)
     { HorOrLev Hor_Lev=ag.ho_lev;
       return Hor_Lev;
       }
  HorOrLev  Hor_vert( GrpArr& ag)
     { HorOrLev Hor_Vert=ag.ho_lev;
       return Hor_Vert;
       }
  d_or_i  Subdecorinc(  GrpArr& ag)
     { d_or_i SubDecOrInc=ag.decinc;
       return SubDecOrInc;
       }
  boolean Dispsub( GrpArr& ag)
     { boolean DispSub=ag.dsb;
	return DispSub;
	}
  void Set_grparr_to(  GrpArr& ag,int  x,int y)
     {// with ag do
     ag.sx=x; ag.sy=y;
     }
  void Cur_onoff(  GrpArr& ag,int i)
     {   Cur_cover(ag,i,1); }
  void Cur_cover(  GrpArr& ag,int i,int orxor)
     {   Fifild(ag,i,orxor);  }
  void Cur_elmn_onoff( GrpArr& ag,int i)
     {   Cur_cover(ag,i,1); }

  void Display_grparr_frame(   GrpArr& ag)
      {int  x0=0,y0=0,x1=0,y1=0,x2=0,y2=0;
	   Grparr_range(ag,x1,y1,x2,y2);
	   // Clear_range(x1,x2,y1,y2);
	    setfillstyle(1,0);
	    bar(x1,y1,x2,y2);
	    //cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<endl;
	    if (ag.dsb)
		      Dissub(ag);
	    Coord(ag,ag.count+(ag.decinc+1)/2+ag.sub1-1,xm,ym);
	    Coord(ag,(ag.decinc+1)/2+ag.sub1-1,x,y);
	    if (ag.decinc==1 )
		    rectangle(x,y,xm+ag.w*(1-ag.ho_lev),ym+ag.h*ag.ho_lev);
	    else
		    rectangle(xm,ym,x+ag.w*(1-ag.ho_lev),y+ag.h*ag.ho_lev);
	    for (i=ag.sub1 ;i<=ag.count+ag.sub1-1;i++)
		    { Coord(ag,i,x,y);
		      line(x,y,x+ag.w*(1-ag.ho_lev),y+ag.h*ag.ho_lev);
		    }
		Coord(ag,ag.sub1-1,x0,y0);
		outtextxy(x0+ag.w/2,y0+ag.h/2,ag.name);

       }
  void Display_grparr_elmns( GrpArr& ag)
      {
    for( i=ag.sub1;i<=ag.count+ag.sub1-1;i++)
	   Disnodedat(ag,i);

	}
  void Display_grparr(  GrpArr& ag)
     {
	Display_grparr_frame(ag);
	Display_grparr_elmns(ag);
	Hide_all_arrptr(ag);
     }
  void Display_arr( GrpArr& ag)
     {    Display_grparr(ag);
     }
  void Move_grparr_to(  GrpArr& ag,int x,int y)
     {   ag.sx=x;
	 ag.sy=y;
	Display_grparr(ag);
	}
  void Move_grparr_dxy(  GrpArr& ag,int x,int y)
     {  ag.sx=ag.sx+x;
	ag.sy=ag.sy+y;
       Display_grparr(ag);
       }
  void Move_grparr_mid(  GrpArr& ag,int x0,int y0)
     {int  dx,dy,x01,x02,y01,y02;
	  Grparr_range(ag,x01,y01,x02,y02);
	   dx=x0-(x01+x02)/2;
	   dy=y0-(y01+y02)/2;
	  //{ ag.sx=ag.sx+dx;ag.sy=ag.sy+dy;}
	   Move_grparr_dxy(ag,dx,dy);
      }
  void Reset_grparr_elmn( GrpArr& ag,int i)
    {//  with ag do
    *Grp_elmn_ptr(ag,i)=0;
     Disnodedat(ag,i);
     }
  void Reset_grparr(  GrpArr& ag)
     {int  i;
	   { for( i=ag.sub1;i<=ag.count+ag.sub1-1;i++)
		   Reset_grparr_elmn(ag,i);
	      Display_grparr_frame(ag);
      }  }
  void Clear_grparr_elmn(  GrpArr& ag ,int i)
     {
      *Grp_elmn_ptr(ag,i)=0;
       Fifild(ag,i,0);
       Fifild(ag,i,1);
      }
  void Clear_grparr( GrpArr& ag)
 {         int     i;
	     for( i=ag.sub1;i<=ag.count+ag.sub1-1;i++)
		Clear_grparr_elmn(ag,i);
	    Display_grparr_frame(ag);
     }

  void Reset_arrbb( bb1& b,int i1,int i2)
     { int i;
       for( i=i1;i<=i2 ;i++)
       b[i]=0;
       }
  void Load_arraa_file( aa& a,int n,string dosfile)
      {FILE*  ff;
      int i,j;
      if((ff=fopen(dosfile,"r"))==NULL)
	   cout<<"file "<< dosfile<<"can't open!"<<endl;
	   i=1;
	  while ((fscanf(ff,"%5d",&a[i])!=EOF)&&(i<n)) i=i+1 ;

	   for( j=i;j<n;j++)
		a[j]=0;
	   fclose(ff);
     }
  void Load_arrbb_file(  bb1& a,int sn,int en, string dosfile)
     {   FILE* ff;
	 int i,j;
     if((ff=fopen(dosfile,"r"))==NULL)
	cout<<"file"<<dosfile<<"can't open!"<<endl;
	 i=sn;
     while ((fscanf(ff,"%5d",&a[i])!=EOF)&&i<en)
	  i=i+1 ;
	   for( j=i;j<en;j++)
	    a[j]=0;
	   fclose(ff);
      }
  void Load_arraa(  aa& a,int n)
     {string  ss;
     boolean selected;
      ss="Arrays\\*.arr";
       Loadquestion("从文件读数组, 文件名",ss,selected);
       if (selected)
		Load_arraa_file(a,n,ss);
      }
  void Load_arrbb(  bb1& a,int sn,int en)
      {string ss;
       boolean selected;
      ss="Arrays\\*.arr";
       Loadquestion("从文件读数组, 文件名",ss,selected);
	if (selected)
	  Load_arrbb_file(a,sn,en,ss);
      }
  void Save_arraa_file( aa& a,int n,string dosfile)
      {FILE* ff;
      int i;
       if((ff=fopen(dosfile,"w"))==NULL)
	cout<<"file "<<dosfile<<" can't write!"<<endl;
	i=1;
	for (i=1;i<=n;i++)
	{cout<<a[i]<<endl;
	fprintf(ff,"%5d",a[i]);
	}
	fclose(ff);
     }
  void Save_arrbb_file(  bb1& a,int sn,int en,string dosfile)
      {FILE*ff;
      int i;
     if((ff=fopen(dosfile,"w"))==NULL)
	 cout<<"file "<<dosfile<<"can't write!"<<endl;
      i=1;
	for( i=sn;i<=en;i++)
	fprintf(ff,"%5d",a[i]);
	fclose(ff);
      }
  void Save_arraa(  aa& a,int n)
      {string ss;
      boolean CanOrNo;
      ss="arrays\\*.arr";
      Savequestion("存储文件到",ss,CanOrNo);
       if (CanOrNo)
	 Save_arraa_file(a,n,ss);
     }
  void Save_arrbb(  bb1& a,int sn,int en)
      {string ss;
      boolean CanOrNo;
      ss="arrays\\*.arr";
      Savequestion("存储文件到",ss,CanOrNo);
      if (CanOrNo)
       Save_arrbb_file(a,sn,en,ss);
     }

 void Disp_arraa(  aa& a,int n)
      {GrpArr ag;
       bb1 b;
       int i;

    for( i=1;i<=n;i++)
	 { b[i]=a[i] ;
	  }
	    Create_grp_arrbb(ag,(HorOrLev)1,(d_or_i)1,true,b,"AA",1,n);

	   Initial_grparr(ag);

	   Move_grparr_to(ag,Sx1(ag),getmaxy()/2);

	    getch();
	    cleardevice();
	    /*  for( i=1;i<=n;i++)
	      {	a[i]=b[i] ;
	       }*/

	    //ccc=readkey;
	    window(1,1,80,4);
      }
  void Disp_arrbb( bb1& b,int sn,int en)
      { GrpArr ag;
       Create_grp_arrbb(ag,(HorOrLev)1,(d_or_i)1,true,b,"BB",sn,en);
       Initial_arr2(ag);
      Move_grparr_to(ag,Sx1(ag),getmaxy()/2);
       getch();
       cleardevice();    //?????

      //closegraph();
	    //ccc=readkey;
      window(1,1,80,4);
     }


  void Modi_grparr(GrpArr& ag)
     {//var dirkey:set of 1..255;
      int  ecol,ci,cj;
      boolean f;
      datatype x;
      int k;//:byte;
	window(1,1,80,2);
	Display_grparr(ag);
	Menu("Arrow for move,  space bar for input,   ctrlw for exit");
	cj=ag.sub1;
	//dirkey=[up,down,left,right,32,ctrlw];        //{{{{{
	ecol=ag.sub1+ag.count-1;
	Cur_cover(ag,cj,1);
       //with ag do
	do
	{
	 Getkey(k,f);
	   if ( !(k==up||k==down||k==left||k==right||k==32||k==ctrlw ) )
		  //in dirkey) then
		cout<<'\007'<<endl; //write(#7)
	    else
		 if (k==32)
		      {    clrscr();
			   cin>>x;
			   * Grp_elmn_ptr(ag,cj) =x;
			   Disnodedat(ag,cj);
			   Cur_cover(ag,cj,1);
		      }
		    else
			 if (k!=ctrlw)

			{
			    Cur_cover(ag,cj,1);
			    switch(k)
			    {
			      case up,left: if (cj==ag.sub1)
						   cj=ecol;
					      else
						    cj=cj-1;
					      break;
			      case down,right:if (cj==ecol)
						     cj=ag.sub1;
						else
						     cj=cj+1;
						break;
			     }
			    Cur_cover(ag,cj,1);
			 }
	   }
	    while(k!=ctrlw);
            return;
     }
  void Input_grparr(GrpArr& ag)

⌨️ 快捷键说明

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