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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? algo2-6.cpp

?? 數據結構(嚴慰民)配套純C代碼 對學習數據結構有很大的幫助
?? CPP
字號:
 // algo2-6.cpp 利用單鏈表結構處理教科書圖2.1(學生健康登記表)
 #include"c1.h"
 #define NAMELEN 8 // 姓名最大長度
 #define CLASSLEN 4 // 班級名最大長度
 struct stud // 記錄的結構
 {
   char name[NAMELEN+1];
   long num;
   char sex;
   int age;
   char Class[CLASSLEN+1];
   int health;
 };
 typedef stud ElemType; // 鏈表結點元素類型為結構體
 #include"c2-2.h"
 char sta[3][9]={"健康  ","一般  ","神經衰弱"}; // 健康狀況(3類)
 FILE *fp;

 Status InitList(LinkList &L)
 { // 操作結果:構造一個空的線性表L
   L=(LinkList)malloc(sizeof(LNode)); // 產生頭結點,并使L指向此頭結點
   if(!L) // 存儲分配失敗
     exit(OVERFLOW);
   L->next=NULL; // 指針域為空
   return OK;
 }

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

 void InsertAscend(LinkList L,ElemType e) // 此函數是由bo2-9.cpp中的同名函數改寫
 { // 按學號非降序插入
   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的內容
   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)
 { // 由鍵盤輸入結點信息
   printf("請輸入姓名(<=%d個字符): ",NAMELEN);
   scanf("%s",e.name);
   printf("請輸入學號: ");
   scanf("%ld",&e.num);
   printf("請輸入性別(m:男 f:女): ");
   scanf("%*c%c",&e.sex);
   printf("請輸入年齡: ");
   scanf("%d",&e.age);
   printf("請輸入班級(<=%d個字符): ",CLASSLEN);
   scanf("%s",e.Class);
   printf("請輸入健康狀況(0:%s 1:%s 2:%s):",sta[0],sta[1],sta[2]);
   scanf("%d",&e.health);
 }

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

 Status ReadFromFile(stud &e)
 { // 由fp指定的文件讀取結點信息到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)
 { // 查找表中學號為num的結點,如找到,q指向此結點,p指向q的前驅,
   // 并返回TRUE;如無此元素,則返回FALSE
   p=L;
   while(p)
   {
     q=p->next;
     if(q&&q->data.num>num) // 因為是按學號非降序排列
       break;
     if(q&&q->data.num==num) // 找到該學號
       return TRUE;
     p=q;
   }
   return FALSE;
 }

 Status FindFromName(LinkList L,char name[],LinkList &p,LinkList &q)
 { // 查找表中姓名為name的結點,如找到,q指向此結點,p指向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)
 { // 刪除表中學號為num的元素,并返回TRUE;如無此元素,則返回FALSE
   LinkList p,q;
   if(FindFromNum(L,num,p,q)) // 找到此結點,且q指向其,p指向其前驅
   {
     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)) // 找到此結點,且q指向其,p指向其前驅
   {
     p->next=q->next;
     free(q);
     return TRUE;
   }
   return FALSE;
 }

 void Modify(ElemType &e)
 { // 修改結點內容
   char s[80];
   Print(e); // 顯示原內容
   printf("請輸入待修改項的內容,不修改的項按回車鍵保持原值:\n");
   printf("請輸入姓名(<=%d個字符): ",NAMELEN);
   gets(s);
   if(strlen(s))
     strcpy(e.name,s);
   printf("請輸入學號: ");
   gets(s);
   if(strlen(s))
     e.num=atol(s);
   printf("請輸入性別(m:男 f:女): ");
   gets(s);
   if(strlen(s))
     e.sex=s[0];
   printf("請輸入年齡: ");
   gets(s);
   if(strlen(s))
     e.age=atoi(s);
   printf("請輸入班級(<=%d個字符): ",CLASSLEN);
   gets(s);
   if(strlen(s))
     strcpy(e.Class,s);
   printf("請輸入健康狀況(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記錄的個數
 void main()
 {
   stud student[N]={{"王小林",790631,'m',18,"計91",0},
                    {"陳紅",790632,'f',20,"計91",1},
                    {"劉建平",790633,'m',21,"計91",0},
                    {"張立立",790634,'m',17,"計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:將結構體數組student中的記錄按學號非降序插入鏈表\n");
     printf("2:將文件中的記錄按學號非降序插入鏈表\n");
     printf("3:鍵盤輸入新記錄,并將其按學號非降序插入鏈表\n");
     printf("4:刪除鏈表中第一個有給定學號的記錄\n");
     printf("5:刪除鏈表中第一個有給定姓名的記錄\n");
     printf("6:修改鏈表中第一個有給定學號的記錄\n");
     printf("7:修改鏈表中第一個有給定姓名的記錄\n");
     printf("8:查找鏈表中第一個有給定學號的記錄\n");
     printf("9:查找鏈表中第一個有給定姓名的記錄\n");
     printf("10:顯示所有記錄 11:將鏈表中的所有記錄存入文件 12:結束\n");
     printf("請選擇操作命令: ");
     scanf("%d",&i);
     switch(i)
     {
       case 1: for(j=0;j<N;j++)
                 InsertAscend(T,student[j]);
               break;
       case 2: printf("請輸入文件名: ");
               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("請輸入待刪除記錄的學號: ");
               scanf("%ld",&num);
               if(!DeleteElem(T,num))
                 printf("沒有學號為%ld的記錄\n",num);
               break;
       case 5: printf("請輸入待刪除記錄的姓名: ");
               scanf("%s",name);
               if(!DeleteElem(T,name))
                 printf("沒有姓名為%s的記錄\n",name);
               break;
       case 6: printf("請輸入待修改記錄的學號: ");
               scanf("%ld%*c",&num); // %*c吃掉回車符
               if(!FindFromNum(T,num,p,q))
                 printf("沒有學號為%ld的記錄\n",num);
               else
               {
                 Modify(q->data);
                 if(q->data.num!=num) // 學號被修改
                 {
                   p->next=q->next; // 把q所指的結點從L中刪除
                   InsertAscend(T,q->data); // 把元素插入L
                   free(q); // 刪除q
                 }
               }
               break;
       case 7: printf("請輸入待修改記錄的姓名: ");
               scanf("%s%*c",name); // %*c吃掉回車符
               if(!FindFromName(T,name,p,q))
                 printf("沒有姓名為%s的記錄\n",name);
               else
               {
                 num=q->data.num; // 學號存入num
                 Modify(q->data);
                 if(q->data.num!=num) // 學號被修改
                 {
                   p->next=q->next; // 把q所指的結點從L中刪除
                   InsertAscend(T,q->data); // 把元素插入L
                   free(q); // 刪除q
                 }
               }
               break;
       case 8: printf("請輸入待查找記錄的學號: ");
               scanf("%ld",&num);
               if(!FindFromNum(T,num,p,q))
                 printf("沒有學號為%ld的記錄\n",num);
               else
                 Print(q->data);
               break;
       case 9: printf("請輸入待查找記錄的姓名: ");
               scanf("%s",name);
               if(!FindFromName(T,name,p,q))
                 printf("沒有姓名為%s的記錄\n",name);
               else
                 Print(q->data);
               break;
       case 10:printf("  姓名    學號 性別 年齡 班級 健康狀況\n");
               ListTraverse(T,Print);
               break;
       case 11:printf("請輸入文件名: ");
               scanf("%s",filename);
               if((fp=fopen(filename,"wb"))==NULL)
                 printf("打開文件失敗!\n");
               else
                 ListTraverse(T,WriteToFile);
               fclose(fp);
               break;
       case 12:flag=0;
     }
   }
 }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人精品一区| 国产精品电影一区二区三区| 蜜臀久久久久久久| 日韩欧美国产三级电影视频| 久久精品免费观看| 久久综合网色—综合色88| 播五月开心婷婷综合| 亚洲精品中文在线观看| 91精品啪在线观看国产60岁| 精品一区二区影视| 国产精品精品国产色婷婷| 一本色道a无线码一区v| 日韩精品免费视频人成| 久久久精品免费观看| 91麻豆精品一区二区三区| 天天综合网天天综合色| 久久久国产一区二区三区四区小说| 99国产精品国产精品毛片| 亚洲电影视频在线| 久久这里只有精品6| 91麻豆精品视频| 美国毛片一区二区三区| 国产精品久久久久aaaa樱花| 欧美精选午夜久久久乱码6080| 韩国一区二区三区| 亚洲色图19p| 2023国产精品| 欧美乱妇20p| 不卡免费追剧大全电视剧网站| 午夜视频在线观看一区二区| 久久久久久久国产精品影院| 欧美视频在线一区二区三区| 日韩视频免费观看高清完整版在线观看 | 久久综合久久综合久久| 东方欧美亚洲色图在线| 日日夜夜精品视频免费| 国产精品你懂的| 欧美zozozo| 在线亚洲精品福利网址导航| 国产精品91xxx| 奇米一区二区三区av| 亚洲女人的天堂| 国产视频一区在线播放| 欧美一级久久久| 欧美色手机在线观看| 波多野结衣精品在线| 国产一区亚洲一区| 青娱乐精品在线视频| 一区二区三区四区不卡在线 | 日本一区免费视频| 日韩精品最新网址| 宅男在线国产精品| 国产精品入口麻豆原神| 成人精品视频一区二区三区| 美女www一区二区| 亚洲不卡一区二区三区| 18欧美亚洲精品| 中文av一区二区| 国产性色一区二区| 久久人人爽爽爽人久久久| 欧美大片在线观看| 欧美一区二区三区在线视频| 在线看日韩精品电影| 色先锋资源久久综合| 9色porny自拍视频一区二区| 国产黄人亚洲片| 国产美女在线精品| 国产毛片一区二区| 国产成人亚洲精品狼色在线| 国产精品一区不卡| 成人性生交大片| 99久久免费精品| av网站免费线看精品| 91亚洲精品乱码久久久久久蜜桃| 成人精品视频一区二区三区尤物| 成人av电影观看| 93久久精品日日躁夜夜躁欧美| 波多野结衣中文字幕一区| 成人avav影音| 色婷婷狠狠综合| 欧美日韩一区中文字幕| 8x8x8国产精品| 欧美电影免费观看高清完整版| 日韩一区二区不卡| 久久人人97超碰com| 国产精品午夜在线观看| 亚洲人吸女人奶水| 水蜜桃久久夜色精品一区的特点| 日韩精品三区四区| 国产一区二区三区在线观看精品| 国产成人午夜电影网| 91美女在线看| 欧美人伦禁忌dvd放荡欲情| 欧美一区二区三区免费视频| 精品国一区二区三区| 国产精品午夜电影| 亚洲伦理在线精品| 91高清在线观看| 日韩欧美色综合| 亚洲国产精品成人综合色在线婷婷 | 18成人在线观看| 亚洲成人高清在线| 久久99蜜桃精品| jlzzjlzz欧美大全| 欧美狂野另类xxxxoooo| 久久精品一区二区三区av| 亚洲欧美一区二区不卡| 日本不卡一二三区黄网| 成人午夜碰碰视频| 欧美精品在线观看一区二区| 久久蜜桃av一区精品变态类天堂| 1024成人网| 久草在线在线精品观看| 99久久精品免费精品国产| 日韩欧美中文一区| 亚洲精品中文字幕在线观看| 麻豆91小视频| 在线精品视频免费播放| 久久综合色婷婷| 午夜婷婷国产麻豆精品| 风流少妇一区二区| 欧美一级高清片| 一区二区三区高清在线| 国产成人综合网| 欧美一区二区三区性视频| 亚洲婷婷综合久久一本伊一区| 看片网站欧美日韩| 欧美日韩精品系列| 成人免费在线播放视频| 国产美女一区二区三区| 91精品一区二区三区久久久久久 | 成人免费看片app下载| 91精品国产欧美一区二区| 亚洲男人的天堂一区二区| 国产盗摄一区二区| 欧美不卡在线视频| 亚洲综合清纯丝袜自拍| www.亚洲激情.com| wwwwxxxxx欧美| 久久精品国产亚洲aⅴ| 在线观看亚洲a| 亚洲欧美一区二区不卡| www.日本不卡| 国产欧美日韩在线视频| 久久91精品国产91久久小草| 欧美精品日韩精品| 夜夜爽夜夜爽精品视频| 色综合中文字幕国产 | 国产精品婷婷午夜在线观看| 看片的网站亚洲| 日韩午夜电影av| 免费成人在线影院| 91精品国产综合久久久蜜臀图片| 亚洲国产综合91精品麻豆| 91视视频在线观看入口直接观看www| 久久九九全国免费| 国产一区二区美女| 久久九九国产精品| 国产一区二区不卡| 精品成人私密视频| 国产激情视频一区二区三区欧美 | 国产精品福利一区| 成人av电影在线网| 18欧美亚洲精品| 97se亚洲国产综合在线| 亚洲日本在线看| 91看片淫黄大片一级在线观看| 最新久久zyz资源站| 一本色道综合亚洲| 亚洲制服丝袜一区| 欧美福利视频导航| 麻豆91精品91久久久的内涵| 精品国产亚洲在线| 国产精品1024| 国产精品久久久久天堂| 色天天综合久久久久综合片| 亚洲第一主播视频| 日韩欧美的一区二区| 国产乱码精品一区二区三区五月婷 | 91在线观看地址| 一区二区三区视频在线看| 欧美日韩精品欧美日韩精品一| 亚洲成a人v欧美综合天堂| 日韩精品中文字幕一区| 国产成人自拍网| 亚洲激情网站免费观看| 欧美一区二区性放荡片| 国产精品99久久久久| 亚洲欧美日韩成人高清在线一区| 欧美日韩亚洲综合一区二区三区 | 国产999精品久久久久久| 亚洲人快播电影网| 日韩一区二区在线观看视频播放| 国内外成人在线| 亚洲蜜臀av乱码久久精品蜜桃| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品久久二区二区| 欧美日韩综合在线| 国产盗摄视频一区二区三区| 一区二区三区不卡在线观看|