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

📄 sstack.h

📁 该包是数据结构的实验软件,来源于合肥工业大学人工智能与数据挖掘实验室,用来实现数据结构.
💻 H
📖 第 1 页 / 共 2 页
字号:

  void display_SeqStack(SeqStack& L)
   {int x1,y1,x2,y2,i;
       SeqStack_range(L, x1,y1,x2,y2);
       Clear_range(x1,y1,x2,y2);
	display_GrpArr(L.ag);

	Arrptr_point_to(L.PTop,L.ag,L.top);
	outtextxy(x1+10,(y1+y2)/2,L.name);
	 rectangle(x1+20,y1,x2,y2);

    }
  void display_SeqStack_top(SeqStack& L)
    {//create_arrptr(L.PTop,"Top",L.ag,20);
     Arrptr_point_to(L.PTop,L.ag,L.top); }
  void move_SeqStack_to(SeqStack& L,int x,int y)
     {  L.ag.sx=x; L.ag.sy=y;   display_SeqStack(L) ;  }
  void move_SeqStack_dxy(SeqStack& L,int x,int y)
     {     clear_SeqStack_range(L);
	   L.ag.sx=L.ag.sx+x;
	   L.ag.sy=L.ag.sy+y;
	   display_SeqStack(L);
     }
  void move_SeqStack_mid(SeqStack& L,int x0,int y0)
     {   clear_SeqStack_range(L);
	   move_GrpArr_mid(L.ag,x0,y0);
	   display_SeqStack(L);
     }
  void move_SeqStack(SeqStack& L)
     {  clear_SeqStack_range(L);
       move_GrpArr(L.ag);
       display_SeqStack(L);
       }
  void move1_SeqStack(SeqStack& L)
     { clear_SeqStack_range(L);
       move1_GrpArr(L.ag);
       display_SeqStack(L);
      }
  void clear_SeqStack_range(SeqStack& L)
   {int x1,y1,x2,y2;
      SeqStack_range(L, x1,y1,x2,y2);
       Clear_range(x1,y1,x2,y2);
      }
  void set_SeqStack_range(SeqStack& L)
    { set_GrpArr_range(L.ag);  }

  void set_SeqStack_to(SeqStack& L,int x,int y)
    {  set_GrpArr_to(L.ag, x,y);  }
  void SeqStack_range(SeqStack& L,int& x1,int& y1,int& x2,int& y2)
    {  GrpArr_range(L.ag,x1,y1,x2,y2);
       x1=x1-20;
       y2=y2+elmnhigh(L.ag);
       }

  void reset_SeqStack_elmn(SeqStack& L,int i)
     { reset_GrpArr_elmn( L.ag,i);
     }
  void reset_SeqStack(SeqStack& L)
     { reset_GrpArr( L.ag);
     }
  void clear_SeqStack_elmn(SeqStack& L,int i)
     {  clear_GrpArr_elmn(L.ag,i); }
  void clear_SeqStack(SeqStack& L)
     {int i;
	 clear_GrpArr(L.ag);
	 display_SeqStack(L);
	 for( i=SeqStack_minsub(L);i<=SeqStack_maxsub(L);i++)
	    clear_GrpArr_elmn(L.ag,i);
      }
  void modi_SeqStack(SeqStack& L)
     {  modi_GrpArr(L.ag);
     }
  void rand_SeqStack(SeqStack& L,int  range1,int range2)
     {
      rand_GrpArr(L.ag,range1,range2);
      }
  void input_SeqStack(SeqStack& L)
     { input_GrpArr(L.ag); }

  int   SeqStack_sx1(SeqStack& L)
     { int SeqStack_Sx1=sx1(L.ag);
     return SeqStack_Sx1; }
  int  SeqStack_sy1(SeqStack& L)
     { int SeqStack_Sy1=sy1(L.ag);
     return SeqStack_Sy1; }
  int  SeqStack_elmnhigh(SeqStack& L)
     { int SeqStack_elmnhigh=elmnhigh(L.ag);
     return SeqStack_elmnhigh ;}
  int  SeqStack_elmnwidth(SeqStack& L)
     { int SeqStack_elmnwidth=elmnwidth(L.ag);
     return SeqStack_elmnwidth ;}
  void set_SeqStack_elmnsize(SeqStack& L,int hh,int ww)
     {  setelmnsize(L.ag,hh,ww); }

  datatype  SeqStack_elmn(SeqStack& L,int i)
     { datatype SeqStack_elmn=elmn(L.ag,i);
     return SeqStack_elmn;
     }
  void put_SeqStack_elmn(SeqStack& L,int i,datatype v,int hl)
     {  put_elmn(L.ag,i,v,hl);
     }
 boolean  cmp_SeqStack_elmn(SeqStack& L,int i,int j,string op,int hl)
     {boolean  cmp_SeqStack_elmn=cmp_elmn(L.ag,i,j,op,hl);
     return  cmp_SeqStack_elmn ;
     }
  void  move_SeqStack_elmn(SeqStack& L,int i,int j,int hl)
     {  move_elmn(L.ag,i,j,hl);
     }
  void xchg_SeqStack_elmn(SeqStack& L,int i,int j,int hl)
     {  xchg_elmn(L.ag,i,j,hl);     }
  void SeqStack_elmn_ptr_elmn(SeqStack& L,int i,int hl)
     {  elmn_ptr_elmn(L.ag,i,hl);     }
  void cur_SeqStack_elmn_onoff(SeqStack& L,int i)
     {  cur_elmn_onoff(L.ag,i);     }
  void display_SeqStack_elmn(SeqStack& L,int i)
     {  display_GrpArr_elmn(L.ag, i);     }
  void set_SeqStack_Top(SeqStack& L,int i)
     { L.top=i; display_SeqStack_top(L); }
  void inc_SeqStack_top(SeqStack& L,int i)
     { inc(L.top,i);
       display_SeqStack_top(L);
      }
  void dec_SeqStack_top(SeqStack& L,int i)
     {
     dec(L.top,i);
     display_SeqStack_top(L);
     }

 void handle_SeqStack_event(pmenunode& pmenu, SeqStack& L)
   {int  xl=0,yl=0,xr=0,yr=0,randmin=0,randmax=0,dd=0;
    boolean sv;
    int sb1=0,sb2=0,dssb=0,holv=0,agw=0,agh=0;
    unsigned char ss[60]="";
   switch(pmenu->command )
   {
   case    ComInputGrpArr:   input_SeqStack(L);    break;
   case      ComRandGrpArr:  {  Inputintinwnd(20,4,60,"设置随机数范围, 下限: ",randmin);
			      Inputintinwnd(20,4,60,"设置随机数范围, 上限: ",randmax);
			      rand_SeqStack(L,randmin,randmax);
				} break;
   case      ComModiGrpArr:  modi_SeqStack(L);break;
   case      ComReadGrpArr:  load_SeqStack(L);break;
   case      ComSaveGrpArr:  save_SeqStack(L);break;
   case      ComSetrange:    set_SeqStack_range(L);break;
   case      ComDisp:        display_SeqStack(L);  break;
   case      ComMove1:      {  Inputstrinwnd(20,3,60,"选择新显示区域 ",ss);
			     SeqStack_range(L,xl,yl,xr,yr);
			     move1_SeqStack(L);
			     Clear_range(xl,yl,xr,yr);
			     display_SeqStack(L);
			      } break;
   case      ComMove2:      { Inputstrinwnd(20,4,60,"选择新显示区域 ",ss);
			      move_SeqStack(L);
			    }   break;
   case    ComEditsub1GrpArr: { sb1=L.ag.sub1;
			      Editintinwnd(20,4,60,"数组下标下限: ",sb1);
			      if (sb1<L.ag.asub1)
				  Error("数据范围错! ");
			      else if (sb1!=L.ag.sub1)
			       { L.ag.sub1=sb1;
				 initial_SeqStack(L);
				  display_SeqStack(L);
				}
			       } break;
   case    ComEditsub2GrpArr:   {  sb2=L.ag.sub1+L.ag.count-1;
				    Editintinwnd(20,4,60,"数组下标上限: ",sb2);
				   if ( (sb2<L.ag.sub1)||(sb2>L.ag.asub2) )
					  Error("数据范围错! ");
				   else if (sb2!=L.ag.sub1+L.ag.count-1)
					   { L.ag.count=sb2-L.ag.sub1+1;
					     initial_SeqStack(L);
					     display_SeqStack(L);
					    }
				 }    break;
   case    ComHorLevGrpArr:       { holv=L.ag.ho_lev;
				    Editintinwnd(20,4,64,"水平或垂直显示:0--垂直显示, 1--水平显示 ",holv);
				   if(!(holv==0||holv==1) )
					Error("数据范围错! ");
				   else if  (L.ag.ho_lev!=holv )
					 { L.ag.ho_lev=holv;
					   initial_SeqStack(L);
					   display_SeqStack(L);
					   }
				    }break;
   case    ComDisSubGrpArr:      {  dssb=L.ag.dsb;
				     Editintinwnd(20,4,64,"是否显示下标: 0--不显示下标  1--显示下标 ",dssb);
				     if(!(dssb==0||dssb==1) )
					  Error("数据范围错! ");
				      else if (dssb!=L.ag.dsb)
					    { L.ag.dsb=boolean(dssb==1);
					      display_SeqStack(L);
					      }
				  }   break;
   case    ComDecIncGrpArr:    { dd=(L.ag.decinc+1)/2;
				  Editintinwnd(20,4,64,"下标按增或减方向: 0--递减, 1--递增 ",dd);
				  if(!(dd==0||dd==1) )
				       Error("数据范围错! ");
				  else if (dd!=(L.ag.decinc+1)/2)
				       { L.ag.decinc=2*L.ag.decinc-1;
					initial_SeqStack(L);
					display_SeqStack(L);
				       }
				}  break;
   case    ComSetHighGrpArr:   {  agh=L.ag.h;
				  Editintinwnd(20,4,60,"设置元素显示高度点数[8..50]: ",agh);
				 if (agh<8||agh>50 )
				     Error("数据范围错! ") ;
				 else if (agh!=L.ag.h)
					{ L.ag.h=agh;
					 initial_SeqStack(L);
					 display_SeqStack(L);
					  }
			      } break;
   case    ComSetWidthGrpArr:  {  agw=L.ag.w;
				  Editintinwnd(20,4,60,"设置元素显示宽度点数[8..70]: ",agw);
				  if(agw<8||agw>70)
				     Error("数据范围错! ");
				  else if (agw!=L.ag.w)
				       { L.ag.w=agw;
					 initial_SeqStack(L);
					 display_SeqStack(L);
					}
				} break;
			    }
     }
 void handle_SeqStack_menu(mymenu&  GrpArrmenu1, boolean& selectorno,
			      pmenunode& pmenu, SeqStack& L)
   {

     Mymenu_selectmenu( GrpArrmenu1,pmenu,selectorno);
	if (selectorno)
	  if (Mymenu_issubmenuitem(GrpArrmenu1) )
	       {
		      Mymenu_disabledispsubmenu(GrpArrmenu1,pmenu->numofmenu/100);
		      handle_SeqStack_event(pmenu,L);
		 }
	     else
		  return;
	else return;
    }
 void handle_SeqStack(SeqStack& L)
  {mymenu GrpArrmenu2;
   pmenunode  BMp=Newmenu1(
	 Newsubmenu1("设置显示方式",
	    Newmenu1(
	      Newitem1("数组下标下限"," ",0,0,ComEditsub1GrpArr,
	      Newitem1("数组下标上限"," ",0,0,ComEditsub2GrpArr,
	      Newitem1("水平或垂直显示"," ",0,0,ComHorLevGrpArr,
	      Newitem1("是否显示下标"," ",0,0,ComDisSubGrpArr,
	      Newitem1("下标按增或减方向"," ",0,0,ComDecIncGrpArr,
	      Newitem1("设置元素显示高度","Set Elmn High [dots] ",0,0,ComSetHighGrpArr,
	      Newitem1("设置元素显示宽度","Set Elmn width [dots] ",0,0,ComSetWidthGrpArr,
	      nil)))))))),
	 Newsubmenu1("输入数据",
	    Newmenu1(
	      Newitem1("逐个输入数据","Input data from KeyBoard ",0,0,ComInputGrpArr,
	      Newitem1("随机输入数据","Rand data to Array ",0,0,ComRandGrpArr,
	      Newitem1("修改原有数组","Modify Array data ",0,0,ComModiGrpArr,
	      Newitem1("从文件读入数组","Read Array data from file ",0,0,ComReadGrpArr,
	      Newitem1("存盘","Save Array data to file ",0,0,ComSaveGrpArr,
	      nil)))))),
	 Newsubmenu1("显示数组",
	    Newmenu1(
	      Newitem1("设定显示区域"," ",0,0,ComSetrange,
	      Newitem1("按原定位置显示","Display Array ",0,0,ComDisp,
	      Newitem1("平移显示  并清除原位","Move to New Position ",0,0,ComMove1,
	      Newitem1("平移显示  不清除原位","Move to New Position, Keep Old",0,0,ComMove2,
	      nil))))),
	 Newsubmenu1("返回",nil,nil)))));
      Mymenu_init(GrpArrmenu2,BMp);


       do
	   handle_SeqStack_menu(GrpArrmenu2,selectorno,pmenu,L);
     while(strcmp(pmenu->menuname,"返回") );
	  Mymenu_clearmainmenu(GrpArrmenu2);
	  Mymenu_reset_cursubmenu(GrpArrmenu2);
	  Mymenu_done(GrpArrmenu2);
  }

 void get_SeqStack(SeqStack& L)
   { handle_SeqStack(L) ; }

#endif

⌨️ 快捷键说明

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