Sử Dụng Danh Sách Liên Kết đơn Cho Bài Tập Danh Sách Sinh Viên
Có thể bạn quan tâm
Sử dụng danh sách liên kết đơn cho bài tập Danh Sách Sinh Viên
Dùng mảng một chiều để lưu trữ một lớp học có N sinh viên. Biết rằng mỗi sinh viên bao gồm các thông tin sau: Tên (chuỗi ký tự), Mã số sinh viên (chuỗi ký tự), Điểm trung bình. Hãy viết hàm thực hiện các yêu cầu sau:a.In danh sách sinh viên ra màn hìnhb.Liệt kê những sinh viên có điểm trung bình cao nhất trong lớp học.c.Cho biết số sinh viên có điểm trung bình >=5. Nếu không có thì thông báo không có.d.Tìm một sinh viên có tên X trong lớp học (X nhập từ bàn phím)e.Xoá một sinh viên có mã số cho trước trong lớp học. Nếu không có thì thông báo không có.f.Sắp xếp danh sách sinh viên tăng theo điểm trung bình bằng thuật toán sắp xếp mà các bạn đã học (Selection Sort, Interchange Sort, Binary Sort)g.Chèn một sinh viên vào lớp học, biết ràng sau khi chèn danh sách sinh viên vẫn tăng dần theo điểm trung bình. #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> struct sv { char ten[20]; char MSSV[10]; int dtb; }; struct NODE { sv info; struct NODE* next; }; struct LIST { NODE *head; NODE *tail; }; NODE* CreateNode (sv x) { NODE *p; p=new NODE; if(p==NULL) exit(1); p->info=x; p->next=NULL; return p; } void CreateList (LIST &L) { L.head=L.tail=NULL; } void input (sv &x) { printf("\nNhap MSSV: "); fflush(stdin); gets(x.MSSV); printf("\nNhap ten: "); fflush(stdin); gets(x.ten); printf("\nNhap dtb: "); scanf("%d", &x.dtb); } void AddLast (LIST &L, NODE *p) { if(L.head==NULL) L.head=L.tail=p; else { L.tail->next=p; L.tail=p; } } void nhap (LIST &L) { sv x; char kt; printf("\nNhan phim bat ki de tiep tuc nhap."); printf("\nNhan 0 de dung nhap."); do { kt=getch(); if(kt=='0') break; input(x); NODE *p=CreateNode(x); AddLast(L,p); } while (1); } void output (sv x) { printf("\n%s %s %d",x.MSSV,x.ten,x.dtb); } void xuat (LIST L) { NODE *p; p=L.head; while(p!=NULL) { output(p->info); p=p->next; } } void maxdtb (LIST L) { NODE *p,*max; int dem; p=L.head; max=p; while (p!=NULL) { if(p->info.dtb>max->info.dtb) { max=p; dem=0; } if(p->info.dtb==max->info.dtb) { max=p; dem++; } p=p->next; } printf("\nSV co dtb cao nhat la: \n"); if(dem==0) output(max->info); else { NODE *q=L.head; while (q!=NULL) { if(q->info.dtb==max->info.dtb) output(q->info); q=q->next; } } } void thongkedtb (LIST L) { NODE *p; int dem=0; p=L.head; while (p!=NULL) { if(p->info.dtb>=5) dem++; p=p->next; } if(dem==0) printf("\nKo co sv co dtb>=5."); else printf("\nCo %d sv co dtb >=5.",dem); } void tim (LIST L) { NODE *p; int dem=0; char k[20]; printf("\nNhap ten sv can tim: "); fflush(stdin); gets(k); p=L.head; while (p!=NULL) { if(strcmp(k,p->info.ten)==0) dem++; p=p->next; } if(dem!=0) { printf("\nTim thay sv: "); output(p->info); } else printf("\nKo tim thay."); } void xoa (LIST &L) { NODE *p, *q; char a[10]; p=L.head; q=NULL; printf("\nNhap MSSV can xoa: "); fflush(stdin); gets(a); while (p!=NULL) { if(strcmp(a, p->info.MSSV)==0) break; else printf("\nKo co sv can xoa."); q=p; p=p->next; } if(q!=NULL) { if(p!=NULL) { q->next=p->next; delete (p); if(p==L.tail) L.tail=q; delete(p); } } else { L.head=p->next; delete(p); if(L.head==NULL) L.tail=NULL; } } void selectionsort (LIST &L) { NODE *p,*q,*min; p=L.head; sv temp; while (p!=L.tail) { min=p; q=p->next; while (q!=NULL) { if(q->info.dtb<min->info.dtb) min=q; q=q->next; } temp=p->info; p->info=min->info; min->info=temp; p=p->next; } } void menu() { LIST L; NODE *p,*q,*moi; sv x; char chon; CreateList(L); do { printf("\n\t\t\tMENU"); printf("\n\t1. Nhap ds"); printf("\n\t2. In ds"); printf("\n\t3. Ds sv co dtb cao nhat"); printf("\n\t4. Ds sv co dtb >=5"); printf("\n\t5. Tim sv"); printf("\n\t6. Xoa sv"); printf("\n\t7. Sap xep ds"); printf("\n\t8. Chen sv"); printf("\n\tNhap 0 de thoat"); chon=getch(); switch(chon) { case '1': { nhap(L); break;} case '2': { xuat(L); break;} case '3': { maxdtb(L); break;} case '4': { thongkedtb(L); break;} case '5': { tim(L); break;} case '6': { xoa(L); printf("\nDs sau khi xoa: "); xuat(L); break;} case '7': { selectionsort(L);printf("\nDs sau khi sap xep: "); xuat(L); break;} case '8': { sv them; printf("\nNhap thong tin sv can them: "); input(them); NODE *t= CreateNode(them); AddLast(L,t); selectionsort(L); printf("\nDs sau khi them :"); xuat(L); break; } case '0': exit(1); default: printf("\nNhap lai."); } } while (chon!='0'); } int main() { while(1) { menu(); getch(); } } Bài đăng Mới hơn Bài đăng Cũ hơn Trang chủBài đăng phổ biến
- Sử dụng danh sách liên kết đơn cho bài tập Danh Sách Sinh Viên
- Các code cơ bản trong cây nhị phân Binary Tree
- Lập Trình C - kiến thức và bài tập ví dụ về FILE
- Quản lý nhân viên - Danh sách liên kết trong C, C++
- Bài tập ôn tập danh sách liên kết đơn
- Các hàm đọc File trong C, bài 1
- Các Thuật Toán Sắp Xếp Cơ Bản - Qick Sort
- Tìm kiếm trong cây nhị phân - Binary Search Tree
- Liên kết đơn - Linked List, bài 1
- Duyệt cây nhị phân - Binary Search Tree Traversal
Search
Lưu trữ Blog
Từ khóa » Danh Sách Liên Kết đơn Sinh Viên
-
Quản Lý Sinh Viên Sử Dụng Danh Sách Liên Kết đơn
-
Bài Tập Danh Sách Liên Kết đơn Bằng C/C++ | Lập Trình Từ Đầu
-
Bài Toán Quản Lý Sinh Viên Sử Dụng Cấu Trúc Dữ Liệu Danh Sách Liên ...
-
Danh Sách Liên Kết Đơn C++ - Techacademy
-
Danh Sách Liên Kết Đơn C++ Qua Bài Toán Quản Lý ... - Hóng Tin
-
[CẤU TRÚC DỮ LIỆU & GIẢI THUẬT] – BÀI TẬP DANH SÁCH LIÊN ...
-
Danh Sách Liên Kết đơn Sinh Viên C Thường - Yam Code
-
Danh Sách Liên Kết đơn – Single Linked List - Lập Trình Không Khó
-
Quản Lý Sinh Viên Bằng Danh Sách Liên Kết - YouTube
-
Danh Sách Liên Kết đơn Quản Lý Sinh Viên C
-
[PDF] BÀI 4 DANH SÁCH LIÊN KẾT ĐƠN Mục Tiêu - EHOU
-
Danh Sách Liên Kết đơn- Quản Lý Sinh Viên - YouTube
-
Đồ án " Bài Toán Quản Lý Sinh Viên Bằng Danh Sách Liên Kết đơn " Pdf