typedef struct Node* NodeType; struct Node { int Key;
NodeType Next;
}; typedef NodeType Position; typedef Position List; //
câu a ham in phan tu le void le(List L){
Position P=L; while(P->Next!=NULL){ if(P->Next->Key%2!=0){
printf("%d ",P->Next->Key);
}
P=P->Next;
}
printf("\n");
}
// câu b ham dem tong so phan tu co gia tri am int phanTuAm(List L){
Position P=L; int dem=0; while(P->Next!=NULL){ if(P->Next-
>Key<0){
dem++;
}
P=P->Next;
}
return dem;
}
// câu c dinh nghia ds lien ket don dung de quan ly thong tin phong thi typedef struct{
char stt[10]; char tenPhongThi[50]; int soLuong;
}phongThi; struct Node{
phongThi Key; struct Node* Next;
}; typedef struct Node* Position; typedef Position List;
#include "stdio.h" typedef struct Node* NodeType; struct Node{
int Key;
NodeType Next;
};
typedef NodeType Position; typedef Position List; //Ham in phan tu chan void printList(List
L){
Position P=L; while(P->Next!=NULL){ if(P->Next->Key%2==0){
printf("%d ",P->Next->Key);
}
P=P->Next;
}
printf("\n");
}
//Viet ham tra ve gia tri duong
int tongPhanTuDuong(List L){
Position P=L; int kq=0; while(P->Next!=NULL){ if(P->Next-
>Key>=0){
kq++;
}
P=P->Next;
}
return kq;
}
//Dinh nghia mot danh sach lien ket don typedef struct{
char soBaoDanh[10]; char hoTen[50]; char hocPhan[50]; float diem;
}SinhVien; struct quanLySV{ SinhVien Element; struct quanLySV* Next;
}; typedef struct quanLySV* Position; typedef Position List;
typedef int ElementType; typedef struct Node* NodeType; struct Node { ElementType
value;
NodeType next;
};
typedef NodeType Position; typedef Position List;
// câu a Viet ham tra ve phan tu lon nhat int maxList(List L){
Position P=L; int max=P->next->value; P=P->next; while(P-
>next!=NULL){ if(P->next->value>max){ max=P->next->value;
}
P=P->next;
}
return max;
}
//b in ra phần tử lẻ
void printLe(List L){
Position P=L; while(P->next!=NULL){ if(P->next->value%2!=0){
printf("%d ",P->next->value);
}
P=P->next;
}
printf("\n");
}
//c trung bình cộng void printAVG(List L){
Position P=L; int tong=0,n=0; while(P->next!=NULL){ tong+=P-
>next->value;
n++;
P=P->next;
}
printf("%.3f\n",(float)tong/n);
} //d tổng giá trị void tong(List L){
Position P=L; int tong=0; while(P->next!=NULL){ tong+=P->next-
>value; P=P->next;
}
printf("%d\n",tong);
}
typedef int
ElementType; typedef struct Node* NodeType; struct Node { ElementType Data; NodeType
Next;
};
typedef NodeType Position; typedef Position List; //a in tổng giá trị void tong(List L){
Position P=L; int tong=0; while(P->Next!=NULL){ tong+=P-
>Next->Data; P=P->Next;
}
printf("%d\n",tong);
}
// câu b Viet ham tra ve phan tu có giá trị min
int minList(List L){
Position P=L; int min=P->Next->Data; P=P->Next; while(P-
>Next!=NULL){ if(P->Next->Data<min){ min=P->Next->Data;
}
P=P->Next;
}
return min;
}
//c tính trung bình cộng void printAVG(List L){
Position P=L; int tong=0,n=0; while(P->next!=NULL){ tong+=P-
>next->value;
n++;
P=P->next;
}
printf("%.3f\n",(float)tong/n);
}
// a khai báo cấu trúc #include "stdio.h" typedef struct{
char maHangHoa[50]; char tenHH[50]; int soLuong; char
xuatXu[50]; }thongTinHH; struct Node{
thongTinHH Element; struct Node* Next;
}; typedef struct Node* Position; typedef Position List; //b in danh sách void print(List L){
Position P=L; while(P->Next!=NULL){
printf("%s - %50s - %d - %50s\n",P->Next->Element.maHangHoa,P-
>Next>Element.tenHH,P->Next->Element.soLuong,P->Next->Element.xuatXu);
P=P->Next;
}
}
//c tổng số lượng int tongSoLuong(List L){
Position P=L;
int sl=0;
while(P->Next!=NULL){ sl+=P->Next->Element.soLuong; P=P->Next;
}
return sl; } //d sắp xếp void sapXep(List *L){
Position P=L,T=P->Next,Temp; while(P->Next!=NULL)
// câu a khai báo typedef struct{
char maLop[10]; char tenLop[50]; int soLuongSV; int tongSoTC;
}lopHoc; struct Node{
lopHoc Element; struct Node* Next;
}; typedef struct Node* Position; typedef Position List; //b in danh sách ra màn hình void
printList(List L){
Position P=L; while(P->Next!=NULL){ printf("Ma lop: %s\nTen lop:
%s\nSo luong sinh vien: %d\nTong so tin chi:
%d\n",P->Next->Element.maLop,P->Next->Element.tenLop,P-
>Next>Element.soLuongSV,P->Next->Element.tongSoTC);
P=P->Next;
}
}
// câu c tổng số lượng sinh viên có trong danh sách int tongSV(List L){
int soSV=0; Position P=L; while(P->Next!=NULL){ soSV+=P->Next-
>Element.soLuongSV;
P=P->Next;
}
return soSV;
}
//d tìm kiếm và in ra thông tin các lớp có số lượng sv <= 10 void printSV(List L){
Position P=L;
printf("Danh sach lop co so luong sinh vien tu 10 tro xuong:\n"); while(P-
>Next!=NULL){
if(P->Next->Element.soLuongSV<=10){
printf("Ma lop: %s\nTen lop: %s\nSo luong sinh vien: %d\nTong so tin
chi: %d\n",P->Next->Element.maLop,P->Next->Element.tenLop,P-
>Next>Element.soLuongSV,P->Next->Element.tongSoTC);
}
P=P->Next;
}
}
//f in ra danh sách lớp 4 thông tin theo cột - dòng void printBeautiful(List L){
Position P=L; char s[43];
printf("Ma lop | %43sTen lop | So chi | So luong sinh vien|",s);
while(P->Next!=NULL){
printf("%10s | %50s | %d |%d",P->Next->Element.maLop,P-
>Next>Element.tenLop,P->Next->Element.soLuongSV,P->Next->Element.tongSoTC);
P=P->Next;
}
}
ĐỀ: Ứng dụng cấu trúc dữ liệu danh sách liên kết ơn ể
a. Khai báo cấu trúc ể lưu trữ thông tin của công văn i trong một cơ quan nhà nước,
gồm các thông tin sau ây: mã công văn, tên công văn, người ký, số trang. b. Viết thủ
tục in thông tin của các công văn ra màn hình.
c. Đếm số lượng của những công văn có số trang >5.
d. Sắp xếp danh sách công văn trên theo thứ tự số trang tăng dần.
// câu a khai báo cấu trúc #include "stdio.h" typedef struct{
char maCongVan[50]; char tenCV[50]; char nguoiKy[50]; int soTrang;
}congVan; struct Node{
congVan Element; struct Node* Next;
}; typedef struct Node* Position; typedef Poition List;
// câu b in thông tin các công văn void printList(List L){
Position P=L; while(P->Next!=NULL){
printf("%s - %s - %s - %d\n",P->Next->Element.maCongVan,P-
>Next>Element.nguoiKy,P->Next->Element.tenCV,P->Next->Element.soTrang);
P=P->Next;
}
}
//C ếm số lượng những cv có trang >5 int dem(List L){
Position P=L; int soCV=0; while(P->Next!=NULL){ if(P->Next-
>Element.soTrang>5){
soCV++;
}
P=P->Next;
}
return soCV;
}
//d sắp xếp danh sách cv theo thứ tự tăng dần void sort(List *L){
Position P=L,T=P->Next,Temp; while(P->Next!=NULL){ while(T-
>Next!=NULL){
if(P->Next->Element.soTrang>T->Next->Element.soTrang){
Temp=P->Next;
P->Next=T->Next;
T->Next=Temp;
}
T=T->Next;
}
P=P->Next;
T=P->Next;
}
}

Preview text:


typedef struct Node* NodeType; struct Node { int Key; NodeType Next;
}; typedef NodeType Position; typedef Position List; //
câu a ham in phan tu le void le(List L){ Position P=L; while(P->Next!=NULL){ if(P->Next->Key%2!=0){
printf("%d ",P->Next->Key); } P=P->Next; } printf("\n"); }
// câu b ham dem tong so phan tu co gia tri am int phanTuAm(List L){ Position P=L;
int dem=0; while(P->Next!=NULL){ if(P->Next- >Key<0){ dem++; } P=P->Next; } return dem; }
// câu c dinh nghia ds lien ket don dung de quan ly thong tin phong thi typedef struct{
char stt[10]; char tenPhongThi[50]; int soLuong; }phongThi; struct Node{
phongThi Key; struct Node* Next;
}; typedef struct Node* Position; typedef Position List;
#include "stdio.h" typedef struct Node* NodeType; struct Node{ int Key; NodeType Next; };
typedef NodeType Position; typedef Position List; //Ham in phan tu chan void printList(List L){ Position P=L; while(P->Next!=NULL){ if(P->Next->Key%2==0){
printf("%d ",P->Next->Key); } P=P->Next; } printf("\n"); }
//Viet ham tra ve gia tri duong int tongPhanTuDuong(List L){ Position P=L; int kq=0; while(P->Next!=NULL){ if(P->Next- >Key>=0){ kq++; } P=P->Next; } return kq; }
//Dinh nghia mot danh sach lien ket don typedef struct{ char soBaoDanh[10]; char hoTen[50]; char hocPhan[50]; float diem; }SinhVien; struct quanLySV{
SinhVien Element; struct quanLySV* Next;
}; typedef struct quanLySV* Position; typedef Position List;
typedef int ElementType; typedef struct Node* NodeType; struct Node { ElementType value; NodeType next; };
typedef NodeType Position; typedef Position List;
// câu a Viet ham tra ve phan tu lon nhat int maxList(List L){ Position P=L;
int max=P->next->value; P=P->next; while(P- >next!=NULL){
if(P->next->value>max){ max=P->next->value; } P=P->next; } return max; }
//b in ra phần tử lẻ void printLe(List L){ Position P=L; while(P->next!=NULL){
if(P->next->value%2!=0){
printf("%d ",P->next->value); } P=P->next; } printf("\n"); }
//c trung bình cộng void printAVG(List L){ Position P=L; int tong=0,n=0; while(P->next!=NULL){ tong+=P- >next->value; n++; P=P->next; }
printf("%.3f\n",(float)tong/n);
} //d tổng giá trị void tong(List L){ Position P=L;
int tong=0; while(P->next!=NULL){ tong+=P->next- >value; P=P->next; } printf("%d\n",tong); } typedef int
ElementType; typedef struct Node* NodeType; struct Node { ElementType Data; NodeType Next; };
typedef NodeType Position; typedef Position List; //a in tổng giá trị void tong(List L){ Position P=L;
int tong=0; while(P->Next!=NULL){ tong+=P- >Next->Data; P=P->Next; } printf("%d\n",tong); }
// câu b Viet ham tra ve phan tu có giá trị min int minList(List L){ Position P=L;
int min=P->Next->Data; P=P->Next; while(P- >Next!=NULL){ if(P->Next->Data min=P->Next->Data; } P=P->Next; } return min; }
//c tính trung bình cộng void printAVG(List L){ Position P=L; int tong=0,n=0; while(P->next!=NULL){ tong+=P- >next->value; n++; P=P->next; }
printf("%.3f\n",(float)tong/n); }
// a khai báo cấu trúc #include "stdio.h" typedef struct{ char maHangHoa[50]; char tenHH[50]; int soLuong; char
xuatXu[50]; }thongTinHH; struct Node{ thongTinHH Element; struct Node* Next;
}; typedef struct Node* Position; typedef Position List; //b in danh sách void print(List L){ Position P=L; while(P->Next!=NULL){
printf("%s - %50s - %d - %50s\n",P->Next->Element.maHangHoa,P-
>Next>Element.tenHH,P->Next->Element.soLuong,P->Next->Element.xuatXu); P=P->Next; } }
//c tổng số lượng int tongSoLuong(List L){ Position P=L; int sl=0;
while(P->Next!=NULL){ sl+=P->Next->Element.soLuong; P=P->Next; }
return sl; } //d sắp xếp void sapXep(List *L){
Position P=L,T=P->Next,Temp; while(P->Next!=NULL)
// câu a khai báo typedef struct{
char maLop[10]; char tenLop[50]; int soLuongSV; int tongSoTC; }lopHoc; struct Node{
lopHoc Element; struct Node* Next;
}; typedef struct Node* Position; typedef Position List; //b in danh sách ra màn hình void printList(List L){ Position P=L; while(P->Next!=NULL){ printf("Ma lop: %s\nTen lop:
%s\nSo luong sinh vien: %d\nTong so tin chi:
%d\n",P->Next->Element.maLop,P->Next->Element.tenLop,P-
>Next>Element.soLuongSV,P->Next->Element.tongSoTC); P=P->Next; } }
// câu c tổng số lượng sinh viên có trong danh sách int tongSV(List L){
int soSV=0; Position P=L; while(P->Next!=NULL){ soSV+=P->Next- >Element.soLuongSV; P=P->Next; } return soSV; }
//d tìm kiếm và in ra thông tin các lớp có số lượng sv <= 10 void printSV(List L){ Position P=L;
printf("Danh sach lop co so luong sinh vien tu 10 tro xuong:\n"); while(P- >Next!=NULL){
if(P->Next->Element.soLuongSV<=10){
printf("Ma lop: %s\nTen lop: %s\nSo luong sinh vien: %d\nTong so tin
chi: %d\n",P->Next->Element.maLop,P->Next->Element.tenLop,P-
>Next>Element.soLuongSV,P->Next->Element.tongSoTC); } P=P->Next; } }
//f in ra danh sách lớp 4 thông tin theo cột - dòng void printBeautiful(List L){ Position P=L; char s[43];
printf("Ma lop | %43sTen lop | So chi | So luong sinh vien|",s); while(P->Next!=NULL){
printf("%10s | %50s | %d |%d",P->Next->Element.maLop,P-
>Next>Element.tenLop,P->Next->Element.soLuongSV,P->Next->Element.tongSoTC); P=P->Next; } }
ĐỀ: Ứng dụng cấu trúc dữ liệu danh sách liên kết ơn ể
a. Khai báo cấu trúc ể lưu trữ thông tin của công văn i trong một cơ quan nhà nước,
gồm các thông tin sau ây: mã công văn, tên công văn, người ký, số trang. b. Viết thủ
tục in thông tin của các công văn ra màn hình.
c. Đếm số lượng của những công văn có số trang >5.
d. Sắp xếp danh sách công văn trên theo thứ tự số trang tăng dần.
// câu a khai báo cấu trúc #include "stdio.h" typedef struct{ char maCongVan[50];
char tenCV[50]; char nguoiKy[50]; int soTrang; }congVan; struct Node{
congVan Element; struct Node* Next;
}; typedef struct Node* Position; typedef Poition List;
// câu b in thông tin các công văn void printList(List L){ Position P=L; while(P->Next!=NULL){
printf("%s - %s - %s - %d\n",P->Next->Element.maCongVan,P-
>Next>Element.nguoiKy,P->Next->Element.tenCV,P->Next->Element.soTrang); P=P->Next; } }
//C ếm số lượng những cv có trang >5 int dem(List L){
Position P=L; int soCV=0; while(P->Next!=NULL){ if(P->Next- >Element.soTrang>5){ soCV++; } P=P->Next; } return soCV; }
//d sắp xếp danh sách cv theo thứ tự tăng dần void sort(List *L){
Position P=L,T=P->Next,Temp; while(P->Next!=NULL){ while(T- >Next!=NULL){
if(P->Next->Element.soTrang>T->Next->Element.soTrang){ Temp=P->Next; P->Next=T->Next; T->Next=Temp; } T=T->Next; } P=P->Next; T=P->Next; } }