for(i=0;i return 0; } int Get_Info(char * * szTitles,char * * buffer,int num) { int i; for(i=0;i /*根据人数排序*/ int jiyushijian(void * a,void * b) { if(((Pfangjian)a)->times>((Pfangjian)b)->times) return 1; else return -1; } /*根据价格排序*/ int jiyujiage(void * a,void * b) { if(((Pfangjian)a)->jiage>((Pfangjian)b)->jiage) return 1; else return -1; } int Collect(int (* Comp)(void *,void *),int num) { Qsort(Buf_Room.Buffer,0,Buf_Room.Bufsize-1,Comp); if(Buf_Room.Bufsize>num) Buf_Room.Bufsize=num; return 0; } int huodecaidan(char * * szTitles,int num)/*菜单循环*/{ int i,count; printf(\ 31 while(1){ printf(\ for(i=1;i<=num;i++) printf(\ scanf(\ if(count<0||count>num){ printf(\ continue; } else{ clrscr(); return count-1; } } } void swap(void * * array,int a,int b){ void * temp; temp=(void *)array[a]; array[a]=array[b]; array[b]=temp; } void Qsort(void * * array,int low,int high,int (*Comp)(void * ,void * )){ int middle,i; if(low>=high) return; middle=(low+high)/2; swap(array,middle,low); for(middle=low,i=low+1;i<=high;i++){ if(Comp(array[low],array[i])>0) swap(array,++middle,i); } swap(array,middle,low); Qsort(array,low,middle-1,Comp); Qsort(array,middle+1,high,Comp); } #define MENU 10 void init(void) { Buf_Room.Buffer=(Pfangjian *)malloc(sizeof(fangjian *)*MAX_ROOM); Buf_Room.Bufsize=0; } 32 int main() { int count; char * szMenu[MENU+1]={ \ \ \ \ \ \ \the list\ \the list\ \the list\ \the list\ \ };/*Fill it*/ Pfangjianzhonglei pRST_Head=NULL; init(); while(1){/*主循环*/ count=huodecaidan(szMenu,MENU); xiangdaohejiemian(count,&pRST_Head); } return 0; } #define TITLES 5 #define MAX_TYPES 8 /*新建一个链表*/ #define GC_TITLES 3 int yindaochuangjian(Pfangjianzhonglei * pRST) { char * szTitles=\ char * szRoom={\ int i,num_rooms,num; Pfangjianzhonglei pRST_temp,pRST_temp2; (*pRST)=(Pfangjianzhonglei)malloc(sizeof(fangjianzhonglei)); printf(szTitles); scanf(\ for(i=1,pRST_temp=(*pRST);i<=num;i++){ printf(\ printf(\ scanf(\ 33 pRST_temp->shuliang=num_rooms; pRST_temp->zhonglei=i+'0'; huodenkefang(pRST_temp,num_rooms); pRST_temp->next=(Pfangjianzhonglei)malloc(sizeof(fangjianzhonglei)); pRST_temp2=pRST_temp; pRST_temp=pRST_temp->next; } pRST_temp2->next=NULL; return 0; } #define GI_TITLES 3 int charujiemian(Pfangjianzhonglei * pRST) { char * szInsert[]={ \ \ \ \ int (*Insert_Fun[])(Pfangjianzhonglei)={ tianjiazhonglei,tianjiakefang,tianjiakehu}; int count; count=huodecaidan(szInsert,GI_TITLES); Insert_Fun[count]((*pRST)); return 0; } #define GM_TITLES 2 int xiugaijiemian(Pfangjianzhonglei * pRST) { char * szDelete[]={ \ \ \ int (*Modify_Fun[])(Pfangjianzhonglei )={ xiugaikefangzhonglei,xiugaikehu}; int count; count=huodecaidan(szDelete,GM_TITLES); Modify_Fun[count]((*pRST)); return 0; } #define GD_TITLES 3 int shanchujiemian(Pfangjianzhonglei * pRST) { 34 char * szDelete[]={ \ \ \ \ int (*Delete_Fun[])(Pfangjianzhonglei *)={ shanchuzhonglei,shanchukefang,shanchukehu}; int count; count=huodecaidan(szDelete,GD_TITLES); Delete_Fun[count](pRST); return 0; } #define GS_TITLES 3 int suousuojiemian(Pfangjianzhonglei * pRST) { char * szTitles[]={ \ \ \ \ int (* fun[GS_TITLES])(Pfangjianzhonglei )={sousuokefangzhonglei,sousuokefangxinxi,sousuokehu}; int count; count=huodecaidan(szTitles,GS_TITLES); fun[count]((*pRST)); return 0; } #define MAX_SHOW 100 int yindaoshuru(Pfangjianzhonglei * pRST) { Pfangjianzhonglei pRST_temp; int count,i; char ** Buf; Buf=(char **)malloc(sizeof(char*)*MAX_SHOW); Buf[0]=(char *)malloc(sizeof(char)*BUFSIZE); sprintf(Buf[0],\ for(pRST_temp=(*pRST),i=1;pRST_temp; i++,pRST_temp=pRST_temp->next){ Buf[i]=(char *)malloc(sizeof(char)*BUFSIZE); 35