2-2 學生成績連結串列處理 (20分)——C語言實現

ID465561發表於2020-10-04

本題要求實現兩個函式,一個將輸入的學生成績組織成單向連結串列;另一個將成績低於某分數線的學生結點從連結串列中刪除。

函式介面定義:

struct stud_node *createlist(); 
struct stud_node *deletelist( struct stud_node *head, int min_score );

函式createlist利用scanf從輸入中獲取學生的資訊,將其組織成單向連結串列,並返回連結串列頭指標。連結串列節點結構定義如下:

struct stud_node {
    int              num;      /*學號*/
    char             name[20]; /*姓名*/
    int              score;    /*成績*/
    struct stud_node *next;    /*指向下個結點的指標*/ };

輸入為若干個學生的資訊(學號、姓名、成績),當輸入學號為0時結束。

函式deletelist從以head為頭指標的連結串列中刪除成績低於min_score的學生,並返回結果連結串列的頭指標。

裁判測試程式樣例:

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

struct stud_node {
     int    num;
     char   name[20];
     int    score;
     struct stud_node *next;
};

struct stud_node *createlist();
struct stud_node *deletelist( struct stud_node *head, int min_score );

int main()
{
    int min_score;
    struct stud_node *p, *head = NULL;

    head = createlist();
    scanf("%d", &min_score);
    head = deletelist(head, min_score);
    for ( p = head; p != NULL; p = p->next )
        printf("%d %s %d\n", p->num, p->name, p->score);

    return 0;
}

/* 你的程式碼將被嵌在這裡 */

PS:由最後的輸出可以看到,這一次的連結串列是沒有頭節點的。

測試通過的程式碼:


在這裡插入程式碼片
在這裡插入程式碼片
// A code block
var foo = 'bar';
// An highlighted block
var foo = 'bar';

相關文章