【C語言】動態鏈表建立工人檔案,並輸出結果

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct factor{
    int id;          //工號
    char name[20];     //姓名
    float wages;     //薪水
    struct factor *next;  //下一節點的頭指針
};

struct factor *create(){
    struct factor *p1,*p2,*head;
    int n=0;
    p1 = p2 = (struct factor*)malloc(sizeof(struct factor));
    scanf("%d,%f,%s",&p1->id,&p1->wages,&p1->name);
    head = NULL;
    while(p1->id != 0){
        n++;
        if(n == 1)
            head = p1;  //把第一個節點指針賦值給頭指針
        else
            p2->next = p1;  //如果是第2.....n個節點  把新分配的p1地址賦值給當前節點的下一個指針元素
        p2 = p1;  //當前節點指針同步到新的分配內存地址
        p1 = (struct factor*)malloc(sizeof(struct factor));  //分配新的內存空間
        scanf("%d,%f,%s",&p1->id,&p1->wages,&p1->name);
    }
    p2->next = NULL; //跳出循環後當前節點的下一頭指針值爲NULL
    return head;
}

int main() {
    struct factor *p;
    //int i=0;
    p = create();
    while(1){
        printf("%d\t%s\t%0.2f\n",p->id,p->name,p->wages);
        p=p->next;
        if(p == NULL)
            break;
    }
    return EXIT_SUCCESS;
}
發佈了54 篇原創文章 · 獲贊 69 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章