最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言嵌套鏈表實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)

 更新時(shí)間:2022年07月25日 16:20:21   作者:sky~~~  
這篇文章主要為大家詳細(xì)介紹了C語言嵌套鏈表實(shí)現(xiàn)學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

C語言嵌套鏈表實(shí)現(xiàn)學(xué)生成績管理系統(tǒng),供大家參考,具體內(nèi)容如下

鏈表A,每個(gè)節(jié)點(diǎn)存放一個(gè)新的鏈表B1,B2,B3,B4,B5的頭結(jié)點(diǎn)。 場景: 一個(gè)年級,相當(dāng)鏈表A 該年級5個(gè)班,每個(gè)班5個(gè)人,相當(dāng)于鏈表B1--B5 做一個(gè)學(xué)生成績管理系統(tǒng) 學(xué)生成績有語文 數(shù)學(xué) 英語 功能: 錄入成績 找三科總分的最高分 最低分 算出平均分

前言

鏈表是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),結(jié)構(gòu)體指針在這里得到了充分的利用。

鏈表可以動態(tài)的進(jìn)行存儲分配,也就是說,鏈表是一個(gè)功能極為強(qiáng)大的數(shù)組,他可以在節(jié)點(diǎn)中定義多種數(shù)據(jù)類型,還可以根據(jù)需要隨意增添,刪除,插入節(jié)點(diǎn)。

鏈表都有一個(gè)頭指針,一般以head來表示,存放的是一個(gè)地址。鏈表中的節(jié)點(diǎn)分為兩類,頭結(jié)點(diǎn)和一般節(jié)點(diǎn),頭結(jié)點(diǎn)是沒有數(shù)據(jù)域的。鏈表中每個(gè)節(jié)點(diǎn)都分為兩部分,一個(gè)數(shù)據(jù)域,一個(gè)是指針域。

說到這里你應(yīng)該就明白了,鏈表就如同車鏈子一樣,head指向第一個(gè)元素:第一個(gè)元素又指向第二個(gè)元素;……,直到最后一個(gè)元素,該元素不再指向其它元素,它稱為“表尾”,它的地址部分放一個(gè)“NULL”(表示“空地址”),鏈表到此結(jié)束。

作為有強(qiáng)大功能的鏈表,對他的操作當(dāng)然有許多,比如:鏈表的創(chuàng)建,修改,刪除,插入,輸出,排序,反序,清空鏈表的元素,求鏈表的長度等等。
C語言嵌套鏈表實(shí)現(xiàn)學(xué)生成績管理系統(tǒng):熟悉鏈表的創(chuàng)建,結(jié)構(gòu)體指針的使用。

實(shí)現(xiàn)思路:創(chuàng)建學(xué)生鏈表->創(chuàng)建班級鏈表
其中
學(xué)生鏈表的結(jié)點(diǎn)的數(shù)據(jù)域存放學(xué)生的信息;
班級鏈表的結(jié)點(diǎn)的數(shù)據(jù)域?yàn)橹赶驅(qū)W生鏈表頭結(jié)點(diǎn)的指針;
利用這樣的嵌套鏈表實(shí)現(xiàn)多個(gè)班級,以及每個(gè)班級多個(gè)學(xué)生的成績管理。

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、代碼實(shí)現(xiàn)

1.包含頭文件

代碼如下(示例):

#include<stdio.h>
#include<stdlib.h>

2.定義學(xué)生鏈表的結(jié)點(diǎn)

代碼如下(示例):

struct Student //聲明學(xué)生鏈表的節(jié)點(diǎn)
{
? ? ? ? int chinese;
? ? ? ? int math;
? ? ? ? int english;
? ? ? ? int sum;
? ? ? ? struct Student* next;
};

3.定義班級鏈表的結(jié)點(diǎn)

代碼如下(示例):

struct Class//聲明班級鏈表的節(jié)點(diǎn)
{
? ? ? ? struct Student* student;
? ? ? ? struct Class* next;
};

4.創(chuàng)建一個(gè)新的學(xué)生鏈表的結(jié)點(diǎn)并且通過尾插法插入鏈表中

代碼如下(示例):

struct Student* CreateStudentNode(struct Student*head,int num)//生成一個(gè)新的學(xué)生節(jié)點(diǎn)并且利用尾插法插入鏈表中
{
? ? ? ? struct Student* p=NULL;
? ? ? ? struct Student* node=(struct Student*)malloc(sizeof(struct Student));//為新節(jié)點(diǎn)開辟空間
? ? ? ? //初始化新節(jié)點(diǎn)
? ? ? ? node->next=NULL;
? ? ? ? printf("輸入第%d個(gè)學(xué)生的信息:(語文 數(shù)學(xué) 英語)\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){ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //鏈表只有一個(gè)節(jié)點(diǎn)時(shí)
? ? ? ? ? ? ? ? head->next=node;
? ? ? ? ? ? ? ? return head;
? ? ? ? }
? ? ? ? else{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //鏈表有多個(gè)節(jié)點(diǎn)時(shí) ?將指針p移到鏈表尾 ?
? ? ? ? ? ? ? ? p=head;
? ? ? ? ? ? ? ? while(p->next!=NULL){ ? ?p=p->next; ?} ? ? ?//將指針p移到鏈表尾 ? ??
? ? ? ? }

? ? ? ? p->next=node;
? ? ? ? return head;
}

5.生成學(xué)生鏈表

代碼如下(示例):

struct Student* init_StudentLink()//生成學(xué)生鏈表
{
? ? ? ? int sum,i;
? ? ? ? struct Student* head=(struct Student*)malloc(sizeof(struct Student));//生成頭節(jié)點(diǎn)
? ? ? ? struct Student* p=NULL;
? ? ? ? scanf("%d",&sum);//學(xué)生數(shù)
? ? ? ? for(i=0;i<sum;i++){

? ? ? ? ? ? ? ? p=CreateStudentNode(head,i);

? ? ? ? }

? ? ? ? return p;
}

6.創(chuàng)建一個(gè)新的班級鏈表的結(jié)點(diǎn)并且通過尾插法插入鏈表中

代碼如下(示例):

struct Class* CreateClassNode(struct Class* head,int num)//生成一個(gè)新的班級節(jié)點(diǎn)并且利用尾插法插入鏈表中
{
? ? ? ? struct Class* p=NULL;
? ? ? ? struct Class* node=(struct Class*)malloc(sizeof(struct Class));
? ? ? ? node->next=NULL;
? ? ? ? struct Student* q=NULL;

? ? ? ? printf("輸入第%d班級的人數(shù):\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("請輸入建立的班級數(shù)\n");
? ? ? ? scanf("%d",&sum);
? ? ? ? for(i=0;i<sum;i++){
? ? ? ? ? ? ? ? CreateClassNode(head,i);
? ? ? ? }

}

8.打印結(jié)點(diǎn)信息

代碼如下(示例):

void printf_node(struct Class *head)//打印節(jié)點(diǎn)信息
{
? ? ? ? int max,min;
? ? ? ? struct Class *q=NULL;
? ? ? ? struct Student *p=NULL;
? ? ? ? q=head->next;
? ? ? ? min=max=q->student->next->sum;
? ? ? ? printf("*****************************************************************************************************\n");
? ? ? ? printf("成績統(tǒng)計(jì)\t(語文\t數(shù)學(xué)\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學(xué)生的成績\n",i,j);
? ? ? ? ? ? ? ? ? ? ? ? printf("語文:%d 數(shù)學(xué):%d ?英語:%d 總分:%d 平均分:%lf\n",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("總分最高為:%d\n",max);
? ? ? ? printf("總分最低為:%d\n",min);
}

9,主函數(shù)

代碼如下(示例):

int main()
{

? ? ? ? struct Class* head=(struct Class*)malloc(sizeof(struct Class));
? ? ? ? head->next=NULL;//生成班級頭結(jié)點(diǎn)
? ? ? ? init_Class(head);//生成班級鏈表
? ? ? ? printf_node(head);//打印信息

? ? ? ? return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 教你Visual?Studio?2022如何新建一個(gè)C語言工程(圖文詳解)

    教你Visual?Studio?2022如何新建一個(gè)C語言工程(圖文詳解)

    這篇文章主要介紹了Visual?Studio?2022如何新建一個(gè)C語言工程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • 淺談C語言中的指針和數(shù)組有什么區(qū)別

    淺談C語言中的指針和數(shù)組有什么區(qū)別

    C語言中的指針和數(shù)組是兩個(gè)重要的數(shù)據(jù)結(jié)構(gòu),它們在內(nèi)存管理和數(shù)據(jù)存儲方面有許多相似之處,但也存在一些關(guān)鍵的區(qū)別,本文就來介紹一下C語言中的指針和數(shù)組有什么區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • C語言實(shí)現(xiàn)井字棋游戲

    C語言實(shí)現(xiàn)井字棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C++ STL 內(nèi) std::{bind/tuple/function} 簡單實(shí)現(xiàn)

    C++ STL 內(nèi) std::{bind/tuple/function} 簡單實(shí)現(xiàn)

    這篇文章主要介紹了C++ STL 內(nèi) std::{bind/tuple/function} 簡單實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • c語言的注釋定界符詳解

    c語言的注釋定界符詳解

    在本文里小編給大家分享的是關(guān)于c語言的注釋定界符知識點(diǎn)詳解,需要的朋友們可以跟著學(xué)習(xí)下。
    2020-02-02
  • C語言實(shí)現(xiàn)投票系統(tǒng)

    C語言實(shí)現(xiàn)投票系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)投票系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C語言修煉之路初識指針陰陽竅?地址還歸大道真上篇

    C語言修煉之路初識指針陰陽竅?地址還歸大道真上篇

    指針是指向另一個(gè)變量的變量。意思是一個(gè)指針保存的是另一個(gè)變量的內(nèi)存地址。換句話說,指針保存的并不是普通意義上的數(shù)值,而是另一個(gè)變量的地址值。一個(gè)指針保存了另一個(gè)變量的地址值,就說這個(gè)指針“指向”了那個(gè)變量
    2022-02-02
  • C++實(shí)現(xiàn)二分法求方程近似解

    C++實(shí)現(xiàn)二分法求方程近似解

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)二分法求方程近似解,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++ 流插入和流提取運(yùn)算符的重載的實(shí)現(xiàn)

    C++ 流插入和流提取運(yùn)算符的重載的實(shí)現(xiàn)

    這篇文章主要介紹了C++ 流插入和流提取運(yùn)算符的重載的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • LeetCode 單調(diào)棧內(nèi)容小結(jié)

    LeetCode 單調(diào)棧內(nèi)容小結(jié)

    這篇文章主要介紹了LeetCode 單調(diào)棧內(nèi)容小結(jié),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論

尉氏县| 泰安市| 阿拉善右旗| 巢湖市| 东城区| 富锦市| 桂阳县| 武穴市| 腾冲县| 昌宁县| 两当县| 保德县| 方山县| 五原县| 休宁县| 龙泉市| 农安县| 体育| 台东市| 尖扎县| 堆龙德庆县| 邯郸市| 班玛县| 湘潭市| 浙江省| 容城县| 遵义县| 胶南市| 潮州市| 浦城县| 安国市| 罗甸县| 莒南县| 鄂温| 来宾市| 沭阳县| 探索| 广东省| 岫岩| 黑水县| 阿拉善盟|