動態連結串列的建立(程式碼)

M_WuFM發表於2018-04-13
/*** 動態連結串列的建立 ***/
#include<stdio.h>
#include<stdlib.h>
#define ID struct Student
#define LEN sizeof(ID)    //該巨集定義為後續結構體的使用提供便捷
ID * creative( int );     //子函式申明
ID
{
    int num;
    int score;
    ID * next;
};     //結構體申明

int main(void)
{
    int n;
    printf(" Enter the n  "
        ", n = \n");     //printf() 的一種表示方法,C primer plus中介紹
    scanf("%d",&n);
    printf(" Piease waiting .....\n");
    ID * p = creative(n);    //p存放返回的首地址
    printf(" 現在開始輸出成績 \n");
    while( p->next != NULL )
    {
        printf("%d %d\n", p->num , p->score );
        p = p->next;
    }
    printf("%d %d\n", p->num , p->score );
    printf(" OK! \n");

    return 0;

}


ID * creative( int n )
{
ID * head ,* p;     //結構體的指標定義
p = head = (ID *)malloc(LEN);     / /申請動態記憶體空間,VC++6.0需要將(void *)強制轉化為(ID *)
scanf("%d,%d", &head->num , &head->score );
while(n-1)     //n-1 的原因是因為前面已經有一個節點
{
    p->next = (ID *)malloc(LEN);
    --n;
    scanf("%d,%d", &(p->next)->num , &p->next->score );     //注意兩者區別
    p = p->next ;
}
p->next = NULL;
return head;     //返回首地址
}

相關文章