Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Bài tập quản lí SV bằng Liên kết Đơn

  1. #1
    Ngày gia nhập
    09 2021
    Bài viết
    0

    Mặc định Bài tập quản lí SV bằng Liên kết Đơn

    Ai giúp em với ạ!



    a) Xóa 1 sinh viên sau sinh viên có mã là X
    b) Xóa tất cả sinh viên có tên là X
    c) In danh sách các sinh viên được xếp loại khá



    //================================================== ==========




    Code:
    #include<stdio.h>
    #include<string.h>
    typedef struct SinhVien  
    {
        char MSSV[10];
        char HoTenSV[40];
        float DTB;
    }SV;
    typedef struct NODE
    {
        SV data;
        struct NODE* next;
    }Node;
    //=======================================================
    void Init(Node* &phead)
    {
        phead = NULL;
    }
    //======================================================
    int IsEmpty (Node* phead) 
    {
        return (phead == NULL);
    }
    //======================================================
    Node* CreateNode(SinhVien x)
    {
        Node* p = new Node;
        p->data = x;
        p->next = NULL;
        return p;
    }
    //=======================================================
    void insertFirst(Node* &phead, SinhVien x)
    {
        Node* p = CreateNode(x);
        if(phead == NULL)
    	{
            phead = p;
        }
        else
    	{
            p->next = phead;
            phead = p;
        }
    }
    //========================================================
    void Nhap1SV(SinhVien &x)
    {
        printf("Nhap ma so sinh vien: ");
        fflush(stdin);
        gets(x.MSSV);
        printf("Nhap ho ten: ");
        fflush(stdin);
        gets(x.HoTenSV);
        printf("Nhap diem : ");
        scanf("%f",&x.DTB);
    }
    //=======================================================
    void insertLast(Node* &phead, SinhVien x)
    {
        Node* a; 
        Node* b;
        a= CreateNode(x);
        if(phead == NULL)
    	{
            phead = a;
        }
        else
    	{
            b = phead;
            while(b->next != NULL)
    		{
                b = b->next;
            }
            b->next = a;
        }
    }
    //=========================================================
    void Xuat1SV(SinhVien x)
    {
        printf("\n\tMSSV: %s",x.MSSV);
        printf("\n\tHo ten sinh vien la: %s", x.HoTenSV);
        printf("\n\tDiem TB: %.2f", x.DTB);
    }
    //=========================================================
    void showList(Node* phead)
    {
        Node* p = phead;
        if(p == NULL)
    	{
            printf("\nDanh sach rong");
        }
        while(p != NULL)
    	{
             Xuat1SV(p->data);
            p = p->next;
        }
    }
    //==========================================================
    void inputlist(Node* &phead)
    {
        int n;
        printf("So luong hoc vien cua danh sach: ");
        scanf("%d",&n);
        for (int i=0;i<n;i++)
        {
            SinhVien x;
            Nhap1SV(x);
            insertLast(phead,x);
        }
                
    }
    //==========================================================
    void SapXep(Node* &phead)
    {
        Node* p;
        Node* q;
        Node* tam;
        SinhVien sv1,sv2;
        if(phead==NULL) printf("\nRong ");
        else
        {
            for(p=phead;p->next!=NULL;p=p->next)
            {
                sv1=p->data;tam=p;
                for(q=p->next;q!=NULL;q=q->next)
                {
                    sv2=q->data;
                    if(sv2.MSSV< sv1.MSSV)
                    {
                        sv1=q->data;tam=q;
                    }
                }
                tam->data=p->data;
                p->data=sv1;
            }
            printf("\nSap xep thanh cong");
        }
    }
    //====================================================
    Menu(int &chon)
    {
    	printf("\n\n\t\t===========MENU===========\n");
    	printf("\t\t1. Nhap du lieu sinh vien\n");
    	printf("\t\t2. Xuat danh sach sinh vien\n");
    	printf("\t\t3. Sap xep DSSV tang dan theo MSSV\n");
    	printf("\t\t4. Xoa 1 sinh vien sau ma sinh vien la X\n");
            printf("\t\t5. Xoa tat ca sinh vien co ten la X\n");
            printf("\t\t6. In danh sach cac sinh vien duoc xep loai kha\n");
            printf("\t\t0. Thoat\n");
    	printf("\t\t Ban chon chuc nang: "); scanf("%d", &chon);
    }
    //=======================================================
    int main()
    {
    	int chon;
        Node* phead;
        Init(phead);
        char x[100];
        do
    	{
            Menu(chon);
            switch(chon)
            {
                case 1:
    		     inputlist(phead);
    		     break;
                case 2:       
                         showList(phead);
                         break;
                case 3:
    	             SapXep(phead);
    		     break;
            }
        }while(chon!=0);
    }
    Đã được chỉnh sửa lần cuối bởi LifeAway : 12-10-2021 lúc 04:27 PM.

  2. #2
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    609

    Trích dẫn Nguyên bản được gửi bởi LifeAway Xem bài viết
    Ai giúp em với ạ!



    a) Xóa 1 sinh viên sau sinh viên có mã là X
    b) Xóa tất cả sinh viên có tên là X
    c) In danh sách các sinh viên được xếp loại khá



    //================================================== ==========




    Code:
    #include<stdio.h>
    #include<string.h>
    typedef struct SinhVien  
    {
        char MSSV[10];
        char HoTenSV[40];
        float DTB;
    }SV;
    typedef struct NODE
    {
        SV data;
        struct NODE* next;
    }Node;
    //=======================================================
    void Init(Node* &phead)
    {
        phead = NULL;
    }
    //======================================================
    int IsEmpty (Node* phead) 
    {
        return (phead == NULL);
    }
    //======================================================
    Node* CreateNode(SinhVien x)
    {
        Node* p = new Node;
        p->data = x;
        p->next = NULL;
        return p;
    }
    //=======================================================
    void insertFirst(Node* &phead, SinhVien x)
    {
        Node* p = CreateNode(x);
        if(phead == NULL)
    	{
            phead = p;
        }
        else
    	{
            p->next = phead;
            phead = p;
        }
    }
    //========================================================
    void Nhap1SV(SinhVien &x)
    {
        printf("Nhap ma so sinh vien: ");
        fflush(stdin);
        gets(x.MSSV);
        printf("Nhap ho ten: ");
        fflush(stdin);
        gets(x.HoTenSV);
        printf("Nhap diem : ");
        scanf("%f",&x.DTB);
    }
    //=======================================================
    void insertLast(Node* &phead, SinhVien x)
    {
        Node* a; 
        Node* b;
        a= CreateNode(x);
        if(phead == NULL)
    	{
            phead = a;
        }
        else
    	{
            b = phead;
            while(b->next != NULL)
    		{
                b = b->next;
            }
            b->next = a;
        }
    }
    //=========================================================
    void Xuat1SV(SinhVien x)
    {
        printf("\n\tMSSV: %s",x.MSSV);
        printf("\n\tHo ten sinh vien la: %s", x.HoTenSV);
        printf("\n\tDiem TB: %.2f", x.DTB);
    }
    //=========================================================
    void showList(Node* phead)
    {
        Node* p = phead;
        if(p == NULL)
    	{
            printf("\nDanh sach rong");
        }
        while(p != NULL)
    	{
             Xuat1SV(p->data);
            p = p->next;
        }
    }
    //==========================================================
    void inputlist(Node* &phead)
    {
        int n;
        printf("So luong hoc vien cua danh sach: ");
        scanf("%d",&n);
        for (int i=0;i<n;i++)
        {
            SinhVien x;
            Nhap1SV(x);
            insertLast(phead,x);
        }
                
    }
    //==========================================================
    void SapXep(Node* &phead)
    {
        Node* p;
        Node* q;
        Node* tam;
        SinhVien sv1,sv2;
        if(phead==NULL) printf("\nRong ");
        else
        {
            for(p=phead;p->next!=NULL;p=p->next)
            {
                sv1=p->data;tam=p;
                for(q=p->next;q!=NULL;q=q->next)
                {
                    sv2=q->data;
                    if(sv2.MSSV< sv1.MSSV)
                    {
                        sv1=q->data;tam=q;
                    }
                }
                tam->data=p->data;
                p->data=sv1;
            }
            printf("\nSap xep thanh cong");
        }
    }
    //====================================================
    Menu(int &chon)
    {
    	printf("\n\n\t\t===========MENU===========\n");
    	printf("\t\t1. Nhap du lieu sinh vien\n");
    	printf("\t\t2. Xuat danh sach sinh vien\n");
    	printf("\t\t3. Sap xep DSSV tang dan theo MSSV\n");
    	printf("\t\t4. Xoa 1 sinh vien sau ma sinh vien la X\n");
            printf("\t\t5. Xoa tat ca sinh vien co ten la X\n");
            printf("\t\t6. In danh sach cac sinh vien duoc xep loai kha\n");
            printf("\t\t0. Thoat\n");
    	printf("\t\t Ban chon chuc nang: "); scanf("%d", &chon);
    }
    //=======================================================
    int main()
    {
    	int chon;
        Node* phead;
        Init(phead);
        char x[100];
        do
    	{
            Menu(chon);
            switch(chon)
            {
                case 1:
    		     inputlist(phead);
    		     break;
                case 2:       
                         showList(phead);
                         break;
                case 3:
    	             SapXep(phead);
    		     break;
            }
        }while(chon!=0);
    }
    Mới đọc sơ qua nhưng thấy 1 số chỗ phải sửa lại
    C Code:
    1. #include<stdio.h>
    2. #include<string.h>
    3. typedef struct SinhVien  
    4. {
    5.     char MSSV[10];
    6.     char HoTenSV[40];
    7.     float DTB;
    8. } SinhVien;
    9. typedef struct NODE
    10. {
    11.     SinhVien data;
    12.     struct NODE* next;
    13. } Node;

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn