亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? algo2-6.cpp

?? 數(shù)據(jù)結(jié)構(gòu)(嚴(yán)慰民)配套純C代碼,準(zhǔn)確理解源代碼的真諦
?? CPP
字號(hào):
 // algo2-6.cpp 利用單鏈表結(jié)構(gòu)處理教科書圖2.1(學(xué)生健康登記表)
 #include"c1.h"
 #define NAMELEN 8 // 姓名最大長(zhǎng)度
 #define CLASSLEN 4 // 班級(jí)名最大長(zhǎng)度
 struct stud // 記錄的結(jié)構(gòu)
 {
   char name[NAMELEN+1];
   long num;
   char sex;
   int age;
   char Class[CLASSLEN+1];
   int health;
 };
 typedef stud ElemType; // 鏈表結(jié)點(diǎn)元素類型為結(jié)構(gòu)體
 #include"c2-2.h"
 char sta[3][9]={"健康  ","一般  ","神經(jīng)衰弱"}; // 健康狀況(3類)
 FILE *fp;

 Status InitList(LinkList &L)
 { // 操作結(jié)果:構(gòu)造一個(gè)空的線性表L
   L=(LinkList)malloc(sizeof(LNode)); // 產(chǎn)生頭結(jié)點(diǎn),并使L指向此頭結(jié)點(diǎn)
   if(!L) // 存儲(chǔ)分配失敗
     exit(OVERFLOW);
   L->next=NULL; // 指針域?yàn)榭?   return OK;
 }

 Status ListTraverse(LinkList L,void(*vi)(ElemType)) // 拷自bo2-2.cpp
 { // 初始條件:線性表L已存在
   // 操作結(jié)果:依次對(duì)L的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù)vi()。一旦vi()失敗,則操作失敗
   LinkList p=L->next;
   while(p)
   {
     vi(p->data);
     p=p->next;
   }
   printf("\n");
   return OK;
 }

 void InsertAscend(LinkList L,ElemType e) // 此函數(shù)是由bo2-9.cpp中的同名函數(shù)改寫
 { // 按學(xué)號(hào)非降序插入
   LinkList q=L,p=L->next;
   while(p&&e.num>p->data.num)
   {
     q=p;
     p=p->next;
   }
   q->next=(LinkList)malloc(sizeof(LNode)); // 插在q后
   q->next->data=e;
   q->next->next=p;
 }

 void Print(stud e)
 { // 顯示記錄e的內(nèi)容
   printf("%-8s %6ld",e.name,e.num);
   if(e.sex=='m')
     printf(" 男");
   else
     printf(" 女");
   printf("%5d  %-4s",e.age,e.Class);
   printf("%9s\n",sta[e.health]);
 }

 void ReadIn(stud &e)
 { // 由鍵盤輸入結(jié)點(diǎn)信息
   printf("請(qǐng)輸入姓名(<=%d個(gè)字符): ",NAMELEN);
   scanf("%s",e.name);
   printf("請(qǐng)輸入學(xué)號(hào): ");
   scanf("%ld",&e.num);
   printf("請(qǐng)輸入性別(m:男 f:女): ");
   scanf("%*c%c",&e.sex);
   printf("請(qǐng)輸入年齡: ");
   scanf("%d",&e.age);
   printf("請(qǐng)輸入班級(jí)(<=%d個(gè)字符): ",CLASSLEN);
   scanf("%s",e.Class);
   printf("請(qǐng)輸入健康狀況(0:%s 1:%s 2:%s):",sta[0],sta[1],sta[2]);
   scanf("%d",&e.health);
 }

 void WriteToFile(stud e)
 { // 將結(jié)點(diǎn)信息寫入fp指定的文件
   fwrite(&e,sizeof(stud),1,fp);
 }

 Status ReadFromFile(stud &e)
 { // 由fp指定的文件讀取結(jié)點(diǎn)信息到e
   int i;
   i=fread(&e,sizeof(stud),1,fp);
   if(i==1) // 讀取文件成功
     return OK;
   else
     return ERROR;
 }

 Status FindFromNum(LinkList L,long num,LinkList &p,LinkList &q)
 { // 查找表中學(xué)號(hào)為num的結(jié)點(diǎn),如找到,q指向此結(jié)點(diǎn),p指向q的前驅(qū),
   // 并返回TRUE;如無此元素,則返回FALSE
   p=L;
   while(p)
   {
     q=p->next;
     if(q&&q->data.num>num) // 因?yàn)槭前磳W(xué)號(hào)非降序排列
       break;
     if(q&&q->data.num==num) // 找到該學(xué)號(hào)
       return TRUE;
     p=q;
   }
   return FALSE;
 }

 Status FindFromName(LinkList L,char name[],LinkList &p,LinkList &q)
 { // 查找表中姓名為name的結(jié)點(diǎn),如找到,q指向此結(jié)點(diǎn),p指向q的前驅(qū),
   // 并返回TRUE;如無此元素,則返回FALSE
   p=L;
   while(p)
   {
     q=p->next;
     if(q&&!strcmp(q->data.name,name)) // 找到該姓名
       return TRUE;
     p=q;
   }
   return FALSE;
 }

 Status DeleteElem(LinkList L,long num)
 { // 刪除表中學(xué)號(hào)為num的元素,并返回TRUE;如無此元素,則返回FALSE
   LinkList p,q;
   if(FindFromNum(L,num,p,q)) // 找到此結(jié)點(diǎn),且q指向其,p指向其前驅(qū)
   {
     p->next=q->next;
     free(q);
     return TRUE;
   }
   return FALSE;
 }

 Status DeleteElem(LinkList L,char name[])
 { // 刪除表中姓名為name的元素,并返回TRUE;如無此元素,則返回FALSE
   LinkList p,q;
   if(FindFromName(L,name,p,q)) // 找到此結(jié)點(diǎn),且q指向其,p指向其前驅(qū)
   {
     p->next=q->next;
     free(q);
     return TRUE;
   }
   return FALSE;
 }

 void Modify(ElemType &e)
 { // 修改結(jié)點(diǎn)內(nèi)容
   char s[80];
   Print(e); // 顯示原內(nèi)容
   printf("請(qǐng)輸入待修改項(xiàng)的內(nèi)容,不修改的項(xiàng)按回車鍵保持原值:\n");
   printf("請(qǐng)輸入姓名(<=%d個(gè)字符): ",NAMELEN);
   gets(s);
   if(strlen(s))
     strcpy(e.name,s);
   printf("請(qǐng)輸入學(xué)號(hào): ");
   gets(s);
   if(strlen(s))
     e.num=atol(s);
   printf("請(qǐng)輸入性別(m:男 f:女): ");
   gets(s);
   if(strlen(s))
     e.sex=s[0];
   printf("請(qǐng)輸入年齡: ");
   gets(s);
   if(strlen(s))
     e.age=atoi(s);
   printf("請(qǐng)輸入班級(jí)(<=%d個(gè)字符): ",CLASSLEN);
   gets(s);
   if(strlen(s))
     strcpy(e.Class,s);
   printf("請(qǐng)輸入健康狀況(0:%s 1:%s 2:%s):",sta[0],sta[1],sta[2]);
   gets(s);
   if(strlen(s))
     e.health=atoi(s); // 修改完畢
 }

 #define N 4 // student記錄的個(gè)數(shù)
 void main()
 {
   stud student[N]={{"王小林",790631,'m',18,"計(jì)91",0},
                    {"陳紅",790632,'f',20,"計(jì)91",1},
                    {"劉建平",790633,'m',21,"計(jì)91",0},
                    {"張立立",790634,'m',17,"計(jì)91",2}}; // 表的初始記錄
   int i,j,flag=1;
   long num;
   char filename[13],name[NAMELEN+1];
   ElemType e;
   LinkList T,p,q;
   InitList(T); // 初始化鏈表
   while(flag)
   {
     printf("1:將結(jié)構(gòu)體數(shù)組student中的記錄按學(xué)號(hào)非降序插入鏈表\n");
     printf("2:將文件中的記錄按學(xué)號(hào)非降序插入鏈表\n");
     printf("3:鍵盤輸入新記錄,并將其按學(xué)號(hào)非降序插入鏈表\n");
     printf("4:刪除鏈表中第一個(gè)有給定學(xué)號(hào)的記錄\n");
     printf("5:刪除鏈表中第一個(gè)有給定姓名的記錄\n");
     printf("6:修改鏈表中第一個(gè)有給定學(xué)號(hào)的記錄\n");
     printf("7:修改鏈表中第一個(gè)有給定姓名的記錄\n");
     printf("8:查找鏈表中第一個(gè)有給定學(xué)號(hào)的記錄\n");
     printf("9:查找鏈表中第一個(gè)有給定姓名的記錄\n");
     printf("10:顯示所有記錄 11:將鏈表中的所有記錄存入文件 12:結(jié)束\n");
     printf("請(qǐng)選擇操作命令: ");
     scanf("%d",&i);
     switch(i)
     {
       case 1: for(j=0;j<N;j++)
                 InsertAscend(T,student[j]);
               break;
       case 2: printf("請(qǐng)輸入文件名: ");
               scanf("%s",filename);
               if((fp=fopen(filename,"rb"))==NULL)
                 printf("打開文件失敗!\n");
               else
               {
                 while(ReadFromFile(e))
                   InsertAscend(T,e);
                 fclose(fp);
               }
               break;
       case 3: ReadIn(e);
               InsertAscend(T,e);
               break;
       case 4: printf("請(qǐng)輸入待刪除記錄的學(xué)號(hào): ");
               scanf("%ld",&num);
               if(!DeleteElem(T,num))
                 printf("沒有學(xué)號(hào)為%ld的記錄\n",num);
               break;
       case 5: printf("請(qǐng)輸入待刪除記錄的姓名: ");
               scanf("%s",name);
               if(!DeleteElem(T,name))
                 printf("沒有姓名為%s的記錄\n",name);
               break;
       case 6: printf("請(qǐng)輸入待修改記錄的學(xué)號(hào): ");
               scanf("%ld%*c",&num); // %*c吃掉回車符
               if(!FindFromNum(T,num,p,q))
                 printf("沒有學(xué)號(hào)為%ld的記錄\n",num);
               else
               {
                 Modify(q->data);
                 if(q->data.num!=num) // 學(xué)號(hào)被修改
                 {
                   p->next=q->next; // 把q所指的結(jié)點(diǎn)從L中刪除
                   InsertAscend(T,q->data); // 把元素插入L
                   free(q); // 刪除q
                 }
               }
               break;
       case 7: printf("請(qǐng)輸入待修改記錄的姓名: ");
               scanf("%s%*c",name); // %*c吃掉回車符
               if(!FindFromName(T,name,p,q))
                 printf("沒有姓名為%s的記錄\n",name);
               else
               {
                 num=q->data.num; // 學(xué)號(hào)存入num
                 Modify(q->data);
                 if(q->data.num!=num) // 學(xué)號(hào)被修改
                 {
                   p->next=q->next; // 把q所指的結(jié)點(diǎn)從L中刪除
                   InsertAscend(T,q->data); // 把元素插入L
                   free(q); // 刪除q
                 }
               }
               break;
       case 8: printf("請(qǐng)輸入待查找記錄的學(xué)號(hào): ");
               scanf("%ld",&num);
               if(!FindFromNum(T,num,p,q))
                 printf("沒有學(xué)號(hào)為%ld的記錄\n",num);
               else
                 Print(q->data);
               break;
       case 9: printf("請(qǐng)輸入待查找記錄的姓名: ");
               scanf("%s",name);
               if(!FindFromName(T,name,p,q))
                 printf("沒有姓名為%s的記錄\n",name);
               else
                 Print(q->data);
               break;
       case 10:printf("  姓名    學(xué)號(hào) 性別 年齡 班級(jí) 健康狀況\n");
               ListTraverse(T,Print);
               break;
       case 11:printf("請(qǐng)輸入文件名: ");
               scanf("%s",filename);
               if((fp=fopen(filename,"wb"))==NULL)
                 printf("打開文件失敗!\n");
               else
                 ListTraverse(T,WriteToFile);
               fclose(fp);
               break;
       case 12:flag=0;
     }
   }
 }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美日韩一区二区三区| 亚洲一区视频在线观看视频| 色综合夜色一区| 蜜臀精品一区二区三区在线观看| 中文字幕一区二区三区蜜月| 日韩欧美综合在线| 在线观看日韩电影| 国产ts人妖一区二区| 麻豆91免费观看| 亚洲婷婷在线视频| 国产欧美日韩不卡| 日韩精品在线网站| 91超碰这里只有精品国产| 暴力调教一区二区三区| 国模无码大尺度一区二区三区| 亚洲激情第一区| 国产精品卡一卡二| 26uuu国产在线精品一区二区| 欧美喷水一区二区| 在线观看一区日韩| 成人动漫一区二区三区| 精品一区二区综合| 美女尤物国产一区| 五月开心婷婷久久| 一区二区三区四区av| 《视频一区视频二区| 国产欧美中文在线| 久久久久久免费| 亚洲精品在线观看网站| 日韩欧美亚洲另类制服综合在线 | 美国十次综合导航| 亚洲成人免费视频| 亚洲综合丝袜美腿| 亚洲男帅同性gay1069| 亚洲国产激情av| 久久久噜噜噜久久中文字幕色伊伊| 欧美一区二区三区公司| 欧美日韩国产一级片| 在线观看国产日韩| 欧美综合一区二区| 欧洲精品视频在线观看| 色狠狠色噜噜噜综合网| 色哟哟国产精品免费观看| 91论坛在线播放| 在线观看中文字幕不卡| 欧美亚洲高清一区二区三区不卡| 色悠悠亚洲一区二区| 欧美自拍偷拍一区| 欧美亚洲尤物久久| 欧美美女黄视频| 日韩欧美一级精品久久| 久久综合国产精品| 日韩国产在线观看一区| 日本视频在线一区| 国内精品久久久久影院一蜜桃| 成人国产精品免费观看动漫| 国产精品99久久久久久似苏梦涵| 国产精品亚洲综合一区在线观看| 丁香婷婷深情五月亚洲| 色综合久久久久网| 欧美日产在线观看| 精品久久久网站| 久久久久88色偷偷免费| 国产精品色哟哟网站| 一区二区三区在线视频免费观看| 亚洲成人第一页| 寂寞少妇一区二区三区| 成人一级黄色片| 色综合久久综合| 欧美精品自拍偷拍| 久久亚洲精精品中文字幕早川悠里| 欧美国产精品一区二区三区| 亚洲欧美日韩久久| 午夜精品久久一牛影视| 国产一区二区三区四区五区入口| 成人开心网精品视频| 欧美四级电影在线观看| 精品久久国产字幕高潮| 国产精品欧美经典| 性做久久久久久免费观看欧美| 韩国理伦片一区二区三区在线播放| 成人丝袜高跟foot| 4438x亚洲最大成人网| 国产日韩欧美麻豆| 天天操天天综合网| 大桥未久av一区二区三区中文| 日本道免费精品一区二区三区| 日韩网站在线看片你懂的| 欧美国产视频在线| 日韩在线a电影| 成人午夜激情视频| 欧美日本乱大交xxxxx| 337p日本欧洲亚洲大胆精品 | 欧美午夜宅男影院| 欧美精品一区二区三| 亚洲一区精品在线| 国产成人欧美日韩在线电影| 在线观看91av| 亚洲欧洲www| 精品一区中文字幕| 欧洲精品在线观看| 国产区在线观看成人精品| 日本 国产 欧美色综合| 91伊人久久大香线蕉| 欧美www视频| 日韩成人免费电影| 色狠狠av一区二区三区| 国产亚洲欧美一级| 三级欧美在线一区| 色综合久久久久久久久| 久久久久99精品一区| 麻豆国产欧美一区二区三区| 欧美色网站导航| 亚洲人成网站在线| 大白屁股一区二区视频| 日韩欧美电影一二三| 亚洲福利国产精品| 在线亚洲+欧美+日本专区| 综合久久综合久久| 国产91丝袜在线播放0| 日韩免费一区二区| 日韩黄色一级片| 欧美日韩在线播放三区四区| 亚洲精品成人悠悠色影视| 成人免费视频国产在线观看| 精品久久久久久久人人人人传媒| 日韩中文字幕亚洲一区二区va在线| 色噜噜久久综合| 亚洲欧美日韩在线不卡| 成人av午夜电影| 国产精品水嫩水嫩| 成人性生交大片免费看中文 | 在线区一区二视频| 国产精品丝袜91| 不卡一二三区首页| 国产精品丝袜久久久久久app| 国产a区久久久| 国产欧美精品国产国产专区 | 制服丝袜亚洲色图| 午夜一区二区三区在线观看| 色噜噜狠狠成人中文综合| 亚洲九九爱视频| 色综合激情久久| 亚洲成人7777| 欧美一级高清大全免费观看| 捆绑紧缚一区二区三区视频| 精品理论电影在线观看| 美女网站色91| 欧美精品一区二区三区蜜桃| 国产精品1区2区3区在线观看| 国产日韩欧美精品一区| 99免费精品视频| 亚洲精品视频一区| 欧美日韩亚洲国产综合| 日日夜夜一区二区| 欧美大肚乱孕交hd孕妇| 韩国三级中文字幕hd久久精品| 久久久久久久久一| 欧美四级电影网| 奇米一区二区三区av| 国产夜色精品一区二区av| 成人一区二区三区在线观看| 亚洲精品国产a| 日韩欧美一区电影| 成人av资源在线观看| 亚洲一区二区三区四区不卡| 制服丝袜中文字幕一区| 国产白丝精品91爽爽久久| 一区二区三区欧美视频| 欧美精品日韩一本| 国产电影一区在线| 亚洲女爱视频在线| 欧美一区日韩一区| 不卡电影免费在线播放一区| 亚洲国产一区二区视频| 精品国产sm最大网站| av中文字幕一区| 青青草原综合久久大伊人精品优势| 国产三级精品在线| 欧美亚一区二区| 国产乱妇无码大片在线观看| 亚洲综合视频网| 国产亚洲一本大道中文在线| 在线观看视频欧美| 国模套图日韩精品一区二区| 亚洲精品久久7777| 久久久99精品久久| 欧美年轻男男videosbes| 成人禁用看黄a在线| 五月天亚洲精品| 最新高清无码专区| 欧美一区二区精品在线| 成人激情动漫在线观看| 日韩精品一区第一页| 国产精品护士白丝一区av| 欧美一级片在线观看| 91社区在线播放| 国模无码大尺度一区二区三区| 亚洲777理论| 亚洲日本中文字幕区|