<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
C語言巢狀連結串列實現學生成績管理系統,供大家參考,具體內容如下
連結串列A,每個節點存放一個新的連結串列B1,B2,B3,B4,B5的頭結點。 場景: 一個年級,相當連結串列A 該年級5個班,每個班5個人,相當於連結串列B1--B5 做一個學生成績管理系統 學生成績有語文 數學 英語 功能: 錄入成績 找三科總分的最高分 最低分 算出平均分
連結串列是一種常見的基礎資料結構,結構體指標在這裡得到了充分的利用。
連結串列可以動態的進行儲存分配,也就是說,連結串列是一個功能極為強大的陣列,他可以在節點中定義多種資料型別,還可以根據需要隨意增添,刪除,插入節點。
連結串列都有一個頭指標,一般以head來表示,存放的是一個地址。連結串列中的節點分為兩類,頭結點和一般節點,頭結點是沒有資料域的。連結串列中每個節點都分為兩部分,一個資料域,一個是指標域。
說到這裡你應該就明白了,連結串列就如同車鏈子一樣,head指向第一個元素:第一個元素又指向第二個元素;……,直到最後一個元素,該元素不再指向其它元素,它稱為“表尾”,它的地址部分放一個“NULL”(表示“空地址”),連結串列到此結束。
作為有強大功能的連結串列,對他的操作當然有許多,比如:連結串列的建立,修改,刪除,插入,輸出,排序,反序,清空連結串列的元素,求連結串列的長度等等。
C語言巢狀連結串列實現學生成績管理系統:熟悉連結串列的建立,結構體指標的使用。
實現思路:建立學生連結串列->建立班級連結串列
其中
學生連結串列的結點的資料域存放學生的資訊;
班級連結串列的結點的資料域為指向學生連結串列頭結點的指標;
利用這樣的巢狀連結串列實現多個班級,以及每個班級多個學生的成績管理。
提示:以下是本篇文章正文內容,下面案例可供參考
1.包含標頭檔案
程式碼如下(範例):
#include<stdio.h> #include<stdlib.h>
2.定義學生連結串列的結點
程式碼如下(範例):
struct Student //宣告學生連結串列的節點 { int chinese; int math; int english; int sum; struct Student* next; };
3.定義班級連結串列的結點
程式碼如下(範例):
struct Class//宣告班級連結串列的節點 { struct Student* student; struct Class* next; };
4.建立一個新的學生連結串列的結點並且通過尾插法插入連結串列中
程式碼如下(範例):
struct Student* CreateStudentNode(struct Student*head,int num)//生成一個新的學生節點並且利用尾插法插入連結串列中 { struct Student* p=NULL; struct Student* node=(struct Student*)malloc(sizeof(struct Student));//為新節點開闢空間 //初始化新節點 node->next=NULL; printf("輸入第%d個學生的資訊:(語文 數學 英語)n",num+1); scanf("%d %d %d",&node->chinese,&node->math,&node->english); node->sum=node->chinese+node->math+node->english; if(head->next==NULL){ //連結串列只有一個節點時 head->next=node; return head; } else{ //連結串列有多個節點時 將指標p移到連結串列尾 p=head; while(p->next!=NULL){ p=p->next; } //將指標p移到連結串列尾 } p->next=node; return head; }
5.生成學生連結串列
程式碼如下(範例):
struct Student* init_StudentLink()//生成學生連結串列 { int sum,i; struct Student* head=(struct Student*)malloc(sizeof(struct Student));//生成頭節點 struct Student* p=NULL; scanf("%d",&sum);//學生數 for(i=0;i<sum;i++){ p=CreateStudentNode(head,i); } return p; }
6.建立一個新的班級連結串列的結點並且通過尾插法插入連結串列中
程式碼如下(範例):
struct Class* CreateClassNode(struct Class* head,int num)//生成一個新的班級節點並且利用尾插法插入連結串列中 { struct Class* p=NULL; struct Class* node=(struct Class*)malloc(sizeof(struct Class)); node->next=NULL; struct Student* q=NULL; printf("輸入第%d班級的人數:n",num+1); q=init_StudentLink(); node->student=q; if(head->next==NULL){ head->next=node; } else{ p=head; while(p->next!=NULL){ p=p->next; } } return 0; }
7.生成班級連結串列
程式碼如下(範例):
void init_Class(struct Class* head)//生成班級連結串列 { int sum,i; printf("請輸入建立的班級數n"); scanf("%d",&sum); for(i=0;i<sum;i++){ CreateClassNode(head,i); } }
8.列印結點資訊
程式碼如下(範例):
void printf_node(struct Class *head)//列印節點資訊 { int max,min; struct Class *q=NULL; struct Student *p=NULL; q=head->next; min=max=q->student->next->sum; printf("*****************************************************************************************************n"); printf("成績統計t(語文t數學t英語t總分t平均分)n"); printf("*****************************************************************************************************n"); int i=0,j=0; p=q->student->next; while(q){ i++; for(p;p->next!=NULL;p=p->next){ j++; printf("第%d班第%d學生的成績n",i,j); printf("語文:%d 數學:%d 英語:%d 總分:%d 平均分:%lfn",p->chinese,p->math,p->english,p->sum,(double)(p->sum)/3); if(p->sum>max){ max=p->sum; } if(p->sum<min){ min=p->sum; } } printf("n"); q=q->next; j=0; } printf("總分最高為:%dn",max); printf("總分最低為:%dn",min); }
9,主函數
程式碼如下(範例):
int main() { struct Class* head=(struct Class*)malloc(sizeof(struct Class)); head->next=NULL;//生成班級頭結點 init_Class(head);//生成班級連結串列 printf_node(head);//列印資訊 return 0; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45