[Bài tập C] Quản lý sinh viên sử dụng danh sách liên kết đơn(Linked List)

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

struct Sinhvien {
    char hoTen[50];
    char lop[10];
    int tuoi;
};
typedef struct Sinhvien SV;

struct node {
    SV sv;
    struct node *pNext;
};
typedef struct node NODE;

struct list {
    NODE *pHead, *pTail;
};
typedef struct list LIST;

void Init(LIST *lt) {
    lt->pHead = lt->pTail = NULL;
}

int isListEmpty(LIST lt) {
    if(!lt.pHead) {
        return 1;
    } return 0;
}

void getList(LIST lt) {
    NODE *pNode;
    if(isListEmpty(lt))
        printf("Danh sach rong!\n");
    else {
        pNode = lt.pHead;
        while(pNode) {
            printf("Ten sinh vien: ");
            puts(pNode->sv.hoTen);
            printf("Tuoi: %d", pNode->sv.tuoi);
            printf("\nLop: ");
            puts(pNode->sv.lop);
            pNode = pNode->pNext;
        }
    }
}

NODE *makeNode(NODE *pNode, SV sv) {
    pNode = (NODE*)malloc(sizeof(NODE));
    if(!pNode) {
        printf("Cap phat bo nho that bai!");
        return NULL;
    }
    pNode->pNext = NULL;
    strcpy(pNode->sv.hoTen, sv.hoTen);
    strcpy(pNode->sv.lop, sv.lop);
    pNode->sv.tuoi = sv.tuoi;
    return pNode;
}

void insertHead(LIST *lt, NODE *pNode) {
    if(lt->pHead == NULL)
        lt->pHead = lt->pTail = pNode;
    else {
        pNode->pNext = lt->pHead;
        lt->pHead = pNode;
    }
}

void input(LIST *lt, int k) {
    Init(lt);
    SV sv[k];
    NODE *pNode;
    int i;
    for(i = 0; i < k; i++) {
        printf("Nhap ho ten sinh vien: ");
        //if(fgets(sv[i].hoTen, 30, stdin) != NULL);
        __fpurge(stdin);
        fgets(sv[i].hoTen, 30, stdin);
        sv[i].hoTen[strlen(sv[i].hoTen)-1] = '\0';
        printf("Lop: ");
        //if(fgets(sv[i].lop, 10, stdin) != NULL);
        fgets(sv[i].lop, 10, stdin);
        sv[i].lop[strlen(sv[i].lop)-1] = '\0';
        printf("Tuoi: ");
        scanf("%d", &sv[i].tuoi);
        pNode = makeNode(pNode, sv[i]);
        insertHead(lt, pNode);
    }
}
int main()
{
    LIST lt;
    int k;
    printf("Nhap so sinh vien can them: ");
    scanf("%d", &k);
    input(&lt, k);
    getList(lt);
    return 0;
}

Nhận xét

Bài đăng phổ biến