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

📄 linklist.h

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

typedef int datatype;

//定义单链表
struct node
{
	struct node * next;
	datatype data;
	boolean hvds;
	datatype x,y;
	};
typedef struct node * llink;
typedef llink link;
typedef link slnklist;

//定义双链表
struct dunode
{
	struct dunode * prior,* next;
	datatype data;
	boolean hvds;
	datatype x,y;
	};
typedef struct dunode * dullink;
typedef dullink dulink;

typedef byte ndfd[200];
typedef byte ndfd0[800];

struct snodeptr
{
	string ptrname;
	link ptr;
	struct snodeptr * next;
	int x,y;
	ndfd fd0;
	};
typedef struct snodeptr * sptrlink;

struct dnodeptr
{
	string ptrname;
	dulink ptr;
	struct dnodeptr * next;
	int x,y;
	ndfd fd0;
	};
typedef struct dnodeptr *dptrlink;

int snum=0;
int dnum=0;
int linkcount=0;

sptrlink frstsptr=NULL;
dptrlink frstdptr=NULL;

int frstcx=80;
int frstcy=120;

const int ndhi=10;
const int sndwd=48;
const int dndwd=52;
const int arrlen=12;
const int nddtwd=40;
const int ptrwd=6;
const datatype num_of_end=-9999;

void  print_llist(link l,boolean nohead);
void  dispose_llist(link &l);

void  create_hsingle_llist(link &l);
void  display_hsingle_llist(string s,link l);
void  create_cchsingle_llist(link &l);
void  display_cchsingle_llist(string s,link l);
void  create_single_llist(link &l);
void  display_single_llist(string s,link l);
void  create_ccsingle_llist(link &l);
void  display_ccsingle_llist(string s,link l);

void  create_hsllist(link &l);
void  display_hsllist(string s,link l);
void  create_sllist(link &l);
void  display_sllist(string s,link l);
void  create_cchsllist(link &l);
void  display_cchsllist(string s,link l);
void  create_ccsllist(link &l);
void  display_ccsllist(string s,link l);
void  disp_hsllist(string s,link l);
void  disp_sllist(string s,link l);
void  disp_cchsllist(string s,link l);
void  disp_ccsllist(string s,link l);

void  print_dullist(dulink l,boolean nohead);  
void  dispose_dullist(dulink &l);
void  create_hdual_llist(dulink &l);
void  display_hdual_llist(string s,dulink l);
void  create_cchdual_llist(dulink &l);
void  display_cchdual_llist(string s,dulink l);
void  create_dual_llist(dulink &l);
void  display_dual_llist(string s,dulink l);
void  create_ccdual_llist(dulink &l);
void  display_ccdual_llist(string s,dulink l);

void  create_hdllist(dulink &l);
void  display_hdllist(string s,dulink l);
void  create_dllist(dulink &l);
void  display_dllist(string s,dulink l);
void  create_cchdllist(dulink &l);
void  display_cchdllist(string s,dulink l);
void  create_ccdllist(dulink &l);
void  display_ccdllist(string s,dulink l);

void  disp_hdllist(string s,dulink l);
void  disp_dllist(string s,dulink l);
void  disp_cchdllist(string s,dulink l);
void  disp_ccdllist(string s,dulink l);

void  load_hsllist_file(link &l,string ss);
void  load_cchsllist_file(link &l,string ss);
void  load_sllist_file(link &l,string ss);
void  load_ccsllist_file(link &l,string ss);
void  load_hdllist_file(dulink &l,string ss);
void  load_cchdllist_file(dulink &l,string ss);
void  load_dllist_file(dulink &l,string ss);
void  load_ccdllist_file(dulink &l,string ss);

void  load_hsllist(link &l);
void  load_cchsllist(link &l);
void  load_sllist(link &l);
void  load_ccsllist(link &l);
void  load_hdllist(dulink &l);
void  load_cchdllist(dulink &l);
void  load_dllist(dulink &l);
void  load_ccdllist(dulink &l);

void  save_hsllist_file(link l,string ss);
void  save_cchsllist_file(link l,string ss);
void  save_sllist_file(link l,string ss);
void  save_ccsllist_file(link l,string ss);
void  save_hdllist_file(dulink l,string ss);
void  save_cchdllist_file(dulink l,string ss);
void  save_dllist_file(dulink l,string ss);
void  save_ccdllist_file(dulink l,string ss);

void  save_hsllist(link l);
void  save_cchsllist(link l);
void  save_sllist(link l);
void  save_ccsllist(link l);
void  save_hdllist(dulink l);
void  save_cchdllist(dulink l);
void  save_dllist(dulink l);
void  save_ccdllist(dulink l);

void  create_sptr(sptrlink &sptr,string title);
void  sptr_point_to(sptrlink &sptr,link sp);
void  disp_sptr_atsnode(sptrlink &sptr,link sp);
boolean have_sptr(string title);
void  create_dptr(dptrlink &sptr,string title);
void  dptr_point_to(dptrlink &sptr,dulink sp);
void  disp_dptr_atdnode(dptrlink &sptr,dulink sp);
boolean have_dptr(string title);

void  comput_snode_card(llink &tt,int frstcx,int frstcy);
void  comput_sllist_card(llink &tt,int frstcx,int frstcy);
void  dis_llist1(llink tp,llink tt,int x1,int y1,boolean nohead,boolean is_first);
void  dis_sllist(string s,llink tt,boolean nohead);
void  disp_sllisthd(string s,llink tt,boolean havehead);
void  display_llist_from(string s,link &l,boolean nohead,int x,int y);
void  display_llist(string s,link &l,boolean nohead);
void  comput_dnode_card(dullink &tt,int frstcx,int frstcy);
void  comput_dllist_card(dullink &tt,int frstcx,int frstcy);
void  dis_llist2(dullink tp,dullink tt,int x1,int y1,boolean nohead,boolean is_first);
void  dis_dllist(string s,dullink tt,boolean nohead);
void  disp_dllisthd(string s,dullink tt,boolean havehead);
void  display_dullist_from(string s,dulink &l,boolean nohead,int x,int y);
void  display_dullist(string s,dulink &l,boolean nohead);
void  disp_card_sllist(string s,llink l,boolean havehead,int x,int y);
void  disp_card_dllist(string s,dulink l,boolean havehead,int x,int y);
void  disp_snode_data(link p);
void  disp_dnode_data(dulink p);

void  sllink_range(link l,int &xl,int &yl,int &xr,int &yr);
void  clear_sllink_range(link l);
void  dllink_range(dulink l,int &xl,int &yl,int &xr,int &yr);
void  clear_dllink_range(dulink l);

void  move_sllist(string s,link &l);
void  move_hsllist(string s,link &l);
void  move_ccsllist(string s,link &l);
void  move_cchsllist(string s,link &l);
void  move1_sllist(string s,link &l);
void  move1_hsllist(string s,link &l);
void  move1_ccsllist(string s,link &l);
void  move1_cchsllist(string s,link &l);
void  set_sllist_range(link &l);

void  move_dllist(string s,dulink &l);
void  move_hdllist(string s,dulink &l);
void  move_ccdllist(string s,dulink &l);
void  move_cchdllist(string s,dulink &l);
void  move1_dllist(string s,dulink &l);
void  move1_hdllist(string s,dulink &l);
void  move1_ccdllist(string s,dulink &l);
void  move1_cchdllist(string s,dulink &l);
void  set_dllist_range(dulink &l);

void  initial_llist();
void  cur_snode_onoff(link p);
void  cur_dnode_onoff(dulink p);
void  put_snode_data(link &p,datatype x);
void  put_dnode_data(dulink &p,datatype x);
void  dispint_atsnode_angle(int num,link l,int angle);
void  dispint_atdnode_angle(int num,dulink l,int angle);
void  dispstr_atsnode_angle(string s,link l,int angle);
void  dispstr_atdnode_angle(string s,dulink l,int angle);

void handle_sllist_event(pmenunode &pmenu,link &t);
void handle_sllist_menu(mymenu &linkmenu1,boolean &selectorno,pmenunode &pmenu,link &t);
void handle_sllist(link &t);
void get_hsllist(link &t);
void get_sllist(link &t);
void get_cchsllist(link &t);
void get_ccsllist(link &t);

void handle_dllist_event(pmenunode &pmenu,dulink &t);
void handle_dllist_menu(mymenu &linkmenu1,boolean &selectorno,pmenunode &pmenu,dulink &t);
void handle_dllist(dulink &t);
void get_hdllist(dulink &t);
void get_dllist(dulink &t);
void get_cchdllist(dulink &t);
void get_ccdllist(dulink &t);

void set_vsnode_mode();
void set_vdnode_mode();
void visite_snode(link &l,int i);
void visite_dnode(dulink &l,int i);
void reset_vsnode_mode(int i);
void reset_vdnode_mode(int i);



//link menu
const int comcreatelink=101;
const int comreadlink=103;
const int comsavelink=104;
const int comsetrange=105;
const int comdisp=106;
const int commove1=107;
const int commove2=108;

mymenu linkmenu1;
pmenunode bmp;
string ss,yn1;
char yn,ch;
boolean mnhavehead,mniscircle;
int mnlknum,n;

ndfd nd1,nd2,fd1,fd2;
ndfd0 dtfd,snd,dnd;

const int keystep=5;
const int bigstep=40;
const int dirnum=6;
const int mvstep=5;

typedef  int move[dirnum][3];
const move mv={
	       {0,-1,up},
           {0,1,down},
	       {-1,0,left},
	       {1,0,right},
	       {-4,0,bigleft},
	       {4,0,bigright}
		};
int dxl,dyl,dxr,dyr,i,j;
unsigned int dir_keyset;

const int comwritedata=801;
const int comnotwritedata=802;
const int comusecurmove=803;
const int comusecurkeep=804;
const int comnotusecur=805;
const int comwaitkey=806;
const int comdelay=807;
const int comnotpause=808;
const int comuseptr=809;
const int comnotuseptr=810;
const int comneedno=811;
const int comnotneedno=812;
const int comselectmodeno=813;

const int numofvstmode=4;

struct visitemode
{
	boolean ifwrite,ifcurcovermove,ifcurcoverkeep,ifwaitkey,ifdelay,
		ifuseptr,ifusenum,ifdispnum;
       	int delaytime,num,numangle;
	string ptrname;
	boolean sord;
	union{
		sptrlink sptr;
		dptrlink dptr;
	}ptrlink;
};

typedef struct visitemode vstmdarr[2][numofvstmode];

mymenu vstmenu2;
pmenunode vstmp2;

int vstno=1;
struct visitemode onevisitemode={true,true,false,true,false,true,true,true,
				0,0,270,
				"P",false,NULL
				};

vstmdarr visitelinkmodes;

//初始化访问模式
void initial_visitemode(vstmdarr &visitemodes,int sd)
{
	int i,j;
	char stemp[255],sstemp[255];

	j=sd;

	for(i=0;i<numofvstmode;i++){
		Convs(i+1,stemp);
		if (j==1) strcpy(sstemp,"P");
		else if (j==2) strcpy(sstemp,"Q");
		strcat(sstemp,stemp);
		strcpy(visitemodes[j-1][i].ptrname,sstemp);
		if (j==1) visitemodes[j-1][i].sord=true;
		else visitemodes[j-1][i].sord=false;
		if (visitemodes[j-1][i].ifuseptr)
		  if (visitemodes[j-1][i].sord)
			{if (!have_sptr(visitemodes[j-1][i].ptrname)) create_sptr(visitemodes[j-1][i].ptrlink.sptr,visitemodes[j-1][i].ptrname);}
		  else
			{if (!have_dptr(visitemodes[j-1][i].ptrname)) create_dptr(visitemodes[j-1][i].ptrlink.dptr,visitemodes[j-1][i].ptrname);}
		if (visitemodes[j-1][i].sord)
			sptr_point_to(visitemodes[j-1][i].ptrlink.sptr,NULL);
		else  dptr_point_to(visitemodes[j-1][i].ptrlink.dptr,NULL);
		if (visitemodes[j-1][i].ifusenum) visitemodes[j-1][i].num=0;
	}
}

void reset_vsnode_mode(int i)
{
	visitelinkmodes[0][i-1].num=0;
	if (visitelinkmodes[0][i-1].ifuseptr) sptr_point_to(visitelinkmodes[0][i-1].ptrlink.sptr,NULL);
}


void reset_vdnode_mode(int i)
{
	visitelinkmodes[1][i-1].num=0;
	if (visitelinkmodes[1][i-1].ifuseptr) dptr_point_to(visitelinkmodes[1][i-1].ptrlink.dptr,NULL);
}

int rsgn(float r)
{
	if (r<0) return -1;
	else if (r>0) return 1;
		 else return 0;
}

void disp_card(int xm,int ym,int angle,int &x,int &y)
{
	float ang;
	if ((angle<60)&&(angle>=0)) angle=60;
    else if ((angle>=121)&&(angle<=180)) angle=120;
	 else if ((angle>=181)&&(angle<=240)) angle=240;
			  else if ((angle>300)&&(angle<=360)) angle=300;
	ang=angle*PI/180;
	x=xm+Round(sndwd*cos(ang));
	y=ym-rsgn(sin(ang))*3*ndhi / 2;
}

void dispint_atsnode_angle(int num,link l,int angle)
{
	int xm,ym,x,y;
	char stemp[255];
	xm=l->x+sndwd / 2;
	ym=l->y+ndhi / 2;
	disp_card(xm,ym, angle, x,y);
	Convs(num,stemp);
	outtextxy(x,y,stemp);
}

void dispint_atdnode_angle(int num,dulink l,int angle)
{
	int xm,ym,x,y;
	char stemp[10];
	xm=l->x+sndwd / 2; 
	ym=l->y+ndhi / 2;
	disp_card(xm,ym, angle, x,y);
	Convs(num,stemp);
	outtextxy(x,y,stemp);
}

void dispstr_atsnode_angle(string s,link l,int angle)
{
	int xm,ym,x,y;
	xm=l->x+sndwd / 2; 
	ym=l->y+ndhi / 2;
  	disp_card(xm,ym, angle, x,y);
  	outtextxy(x,y,s);
}


void dispstr_atdnode_angle(string s,dulink l,int angle)
{
	int xm,ym,x,y;
	xm=l->x+sndwd / 2; 
	ym=l->y+ndhi / 2;
	disp_card(xm,ym, angle, x,y);	  
	outtextxy(x,y,s);
}

void visite_snode(link &l,int i)
{
	char ss[255]="",s1[255]="";
	char stemp[255],sstemp[255];
	strcpy(ss,"访问模式");
	Convs(i,stemp);
	strcat(ss,stemp);
	strcat(ss," 访问元素方式:");
    	if (l!=NULL){
		if (visitelinkmodes[0][i-1].ifwrite) strcat(s1," 打印元素");
		if (visitelinkmodes[0][i-1].ifcurcovermove ||visitelinkmodes[0][i-1].ifcurcoverkeep) strcat(s1," 显示光标");
		if (visitelinkmodes[0][i-1].ifuseptr) strcat(s1," 用指示器");
		if (visitelinkmodes[0][i-1].ifusenum) strcat(s1," 显示序号");
		if (visitelinkmodes[0][i-1].ifwaitkey) strcat(s1," 按键继续");
		 else if (visitelinkmodes[0][i-1].ifdelay) {
				Convs(visitelinkmodes[0][i-1].delaytime,sstemp);
				strcat(s1," delay ");
				strcat(s1,sstemp);
				strcat(s1," ms to cont.");
				}
		strcat(ss," by");
		strcat(ss,s1);
		Menu(ss);
		if (visitelinkmodes[0][i-1].ifwrite) printf("%d  ",l->data);
		if (visitelinkmodes[0][i-1].ifcurcovermove ||visitelinkmodes[0][i-1].ifcurcoverkeep)
			cur_snode_onoff(l);
		if (visitelinkmodes[0][i-1].ifuseptr)  sptr_point_to(visitelinkmodes[0][i-1].ptrlink.sptr,l);
		if (visitelinkmodes[0][i-1].ifusenum)  visitelinkmodes[0][i-1].num=visitelinkmodes[0][i-1].num+1;
		if (visitelinkmodes[0][i-1].ifusenum && visitelinkmodes[0][i-1].ifdispnum)
			dispint_atsnode_angle(visitelinkmodes[0][i-1].num,l,visitelinkmodes[0][i-1].numangle);
		if (visitelinkmodes[0][i-1].ifwaitkey) getch();
		  else if (visitelinkmodes[0][i-1].ifdelay) delay(visitelinkmodes[0][i-1].delaytime);
		if (visitelinkmodes[0][i-1].ifcurcovermove)
			cur_snode_onoff(l);
	}
}


void visite_dnode(dulink &l, int i)
{
	char ss[255]="",s1[255]="",stemp[255],sstemp[255];
	Convs(i,stemp);
	strcpy(ss,"访问模式");
	strcat(ss,stemp);
	strcat(ss," 访问元素方式:");
	if (l!=NULL){
 		if (visitelinkmodes[1][i-1].ifwrite) strcat(s1," 打印元素");
		if (visitelinkmodes[1][i-1].ifcurcovermove ||visitelinkmodes[1][i-1].ifcurcoverkeep) strcat(s1," 显示光标");
		if (visitelinkmodes[1][i-1].ifuseptr) strcat(s1," 用指示器");
		if (visitelinkmodes[1][i-1].ifusenum) strcat(s1," 显示序号");
		if (visitelinkmodes[1][i-1].ifwaitkey) strcat(s1," 按键继续");
		 else if (visitelinkmodes[1][i-1].ifdelay) {
				Convs(visitelinkmodes[1][i-1].delaytime,sstemp);
		 		strcat(s1," delay ");
		 		strcat(s1,sstemp);
		 		strcat(s1," ms to cont.");
		 		}
		strcat(ss," by");
		strcat(ss,s1);
		Menu(ss);
		if (visitelinkmodes[1][i-1].ifwrite) printf("%d  ",l->data);
		if (visitelinkmodes[1][i-1].ifcurcovermove ||visitelinkmodes[1][i-1].ifcurcoverkeep)
			cur_dnode_onoff(l);
		if (visitelinkmodes[1][i-1].ifuseptr)  dptr_point_to(visitelinkmodes[1][i-1].ptrlink.dptr,l);
		if (visitelinkmodes[1][i-1].ifusenum)  visitelinkmodes[1][i-1].num=visitelinkmodes[1][i-1].num+1;
		if (visitelinkmodes[1][i-1].ifusenum && visitelinkmodes[1][i-1].ifdispnum)
			dispint_atdnode_angle(visitelinkmodes[1][i-1].num,l,visitelinkmodes[1][i-1].numangle);
		if (visitelinkmodes[1][i-1].ifwaitkey) getch();
		  else if (visitelinkmodes[1][i-1].ifdelay) delay(visitelinkmodes[1][i-1].delaytime);
		if (visitelinkmodes[1][i-1].ifcurcovermove)
			cur_dnode_onoff(l);
	}
}

void rangeerror()
{
	printf("\007");
 	Error("数据范围错!");
} 


void handle_visite2_event(pmenunode &pmenu,vstmdarr &visitemodes,int sd)
{
	int xl,yl,xr,yr,state;  
	boolean sv,haveerr;
	char stemp[255],sstemp[255];
   	if ((pmenu->command>=800)&&(pmenu->command<=815)){
	  switch (pmenu->command){
		case comselectmodeno:{
			Convs(numofvstmode,sstemp);
			strcpy(stemp,"选择采用的访问方式号[1..");
			strcat(stemp,sstemp);
			strcat(stemp,"] ");
			do {
				Editintinwnd(20,4,60,stemp,vstno);
	     		if (! ((vstno>=1)&&(vstno<=numofvstmode))) rangeerror();
	  		}while	 (!((vstno>=1)&&(vstno<=4)));
	  		break;
	  	}
		case comwritedata:{
			do {
				state=2-visitemodes[sd-1][vstno-1].ifwrite;
	     		Editintinwnd(20,4,60,"1--打印元素值  2--不打印元素值",state);
	     		if (!((state>=1)&&(state<=2))) rangeerror();
				else if (state==1) visitemodes[sd-1][vstno-1].ifwrite=true;
					 else visitemodes[sd-1][vstno-1].ifwrite=false;
	   		}while (!((state>=1)&&(state<=2)));
	   		break;
	   	}
		case comusecurmove:{
			do{ 
				state=3-(2*visitemodes[sd-1][vstno-1].ifcurcovermove+visitemodes[sd-1][vstno-1].ifcurcoverkeep);
	    		Editintinwnd(10,4,70,"1--覆盖光棒然后移去  2--使用光棒不移去  3--不使用光棒",state);
	    		if (!((state>=1)&&(state<=3))) rangeerror();
				else{
					if (state==1) visitemodes[sd-1][vstno-1].ifcurcovermove=true;
					else visitemodes[sd-1][vstno-1].ifcurcovermove=false;
					if (state==2) visitemodes[sd-1][vstno-1].ifcurcoverkeep=true;
					else visitemodes[sd-1][vstno-1].ifcurcoverkeep=false;
					}
	    	}while (!((state>=1)&&(state<=3)));
	    	break;
	    }
	    case comwaitkey:{
	    	do{ 
	    		state=3-(2*visitemodes[sd-1][vstno-1].ifwaitkey+visitemodes[sd-1][vstno-1].ifdelay);
	    		Editintinwnd(10,4,70,"1--等待按键继续  2--自动延迟时间  3--访问后不停顿",state);
	    		if (!((state>=1)&&(state<=3))) rangeerror();
				else {
						if (state==1) visitemodes[sd-1][vstno-1].ifwaitkey=true;
						else  visitemodes[sd-1][vstno-1].ifwaitkey=false;
						if (state==2) visitemodes[sd-1][vstno-1].ifdelay=true;
						else visitemodes[sd-1][vstno-1].ifdelay=false;
						if (state==2)
		     				do{ 
								Editintinwnd(20,6,60,"延迟时间[0..10000]毫秒: ",visitemodes[sd-1][vstno-1].delaytime);
								if ((visitemodes[sd-1][vstno-1].delaytime<0)||(visitemodes[sd-1][vstno-1].delaytime>10000)) rangeerror();
							}while (!((visitemodes[sd-1][vstno-1].delaytime<0)&&(visitemodes[sd-1][vstno-1].delaytime<=10000)));
				}
			}while (!((state>=1)&&(state<=3)));
	  		break;
	  	}
	  	case comuseptr:{
	  		do{ 
	  			state=2-visitemodes[sd-1][vstno-1].ifuseptr;  
	  			visitemodes[sd-1][vstno-1].ifuseptr=false;
	    		Editintinwnd(20,4,60,"1--使用指示器  2--不使用指示器",state);
				if (state==1){
	    			do{
	    				Convs(vstno,stemp);
	    				strcpy(visitemodes[sd-1][vstno-1].ptrname,"P");
	    				strcpy(visitemodes[sd-1][vstno-1].ptrname,stemp);
	    				haveerr=false;
						Editstrinwnd(20,6,60,"所使用的指示器名称为:",visitemodes[sd-1][vstno-1].ptrname);
		      			if (visitemodes[sd-1][vstno-1].sord && have_sptr(visitemodes[sd-1][vstno-1].ptrname)||! visitemodes[sd-1][vstno-1].sord && have_dptr(visitemodes[sd-1][vstno-1].ptrname)){
							rangeerror(); 
							haveerr=true;
							}
						else  visitemodes[sd-1][vstno-1].ifuseptr=true;
	       			}while (haveerr);
	    		}else visitemodes[sd-1][vstno-1].ifuseptr=false;
	  		}while (!((state>=1)&&(state<=2)));
	  		break;
	  	}
		case comneedno:{   	
			do{ 
				state=2-visitemodes[sd-1][vstno-1].ifusenum;
	    		Editintinwnd(20,4,60,"1--显示序号  2--不显示序号",state);
	    		if (state==1)
	    			do{
	    				Editintinwnd(20,6,60,"显示序号的角度[0..360]:",visitemodes[sd-1][vstno-1].numangle);
		  				if  ((visitemodes[sd-1][vstno-1].numangle<0)||(visitemodes[sd-1][vstno-1].numangle>360)) rangeerror();
	       			}while  (!((visitemodes[sd-1][vstno-1].numangle>=0) && (visitemodes[sd-1][vstno-1].numangle<=360)));
	     		if (state==1) visitemodes[sd-1][vstno-1].ifusenum=true;
	     		else visitemodes[sd-1][vstno-1].ifusenum=false;
	  		}while (!((state>=1)&&(state<=2)));
	  		break;
	  	}
      }
	}
}

void handle_visite2_menu(mymenu &vstmenu2,boolean &selectorno,pmenunode &pmenu,vstmdarr &visitemodes,int sd)
{
	for(j=0;j<2;j++)
     for(i=0;i<4;i++)
      visitelinkmodes[j][i]=onevisitemode;
    vstmp2=Newmenu1(
		Newsubmenu1("置访问方式",
	    Newmenu1(
	      Newitem1("选择访问方式号","选择访问方式号... ",0,0,comselectmodeno,
	      Newitem1("设置打印元素值","设置是否打印元素的值... ",0,0,comwritedata,
	      Newitem1("使用光棒方式","设置是否使用光标... ",0,0,comusecurmove,
	      Newitem1("设置停顿方式","设置在两次访问之间是否需要停顿... ",0,0,comwaitkey,
	      Newitem1("设置使用指示器","设置是否需要指示器指示结点.. ",0,0,comuseptr,
	      Newitem1("显示序号","设置是否需要显示序号...",0,0,comneedno,
	      NULL))))))),
		Newsubmenu1("返回",NULL,NULL)));
	Mymenu_init(vstmenu2,vstmp2);

⌨️ 快捷键说明

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