#include<bits/stdc++.h>
using namespace std;
struct SV{
int msv;
char hodem[ 30 ] ;
char ten[ 10 ] ;
char gioitinh[ 10 ] ;
int namsinh;
double diemtk;
} ;
struct Node{
SV infor;
Node* next;
} ;
typedef Node* TRO;
void create( TRO & L) {
L= NULL ;
}
int empty( TRO & L) {
return ( L== NULL ) ;
}
SV taosv( int ma,char hd[ 30 ] ,char t[ 10 ] ,char gt[ 10 ] ,int y,double d) {
SV sv;
sv.msv = ma;
strcpy ( sv.hodem ,hd) ;
strcpy ( sv.ten ,t) ;
strcpy ( sv.gioitinh ,gt) ;
sv.namsinh = y;
sv.diemtk = d;
return sv;
}
void display( SV sv) {
cout << fixed;
cout << setw( 8 ) << left<< sv.msv ;
cout << setw( 10 ) << sv.hodem ;
cout << setw( 9 ) << sv.ten ;
cout << setw( 8 ) << sv.gioitinh ;
cout << setw( 10 ) << right<< sv.namsinh ;
cout << setw( 10 ) << setprecision( 2 ) << sv.diemtk ;
cout << endl;
}
//chen 1 node vao cuoi ds
void add( TRO & L ,SV sv) {
TRO P, Q= L;
P= new Node;
P- > infor= sv;
P- > next= NULL ;
if ( empty( L) ) {
L= P;
}
else {
while ( Q- > next! = NULL )
Q= Q- > next;
Q- > next= P;
}
}
//tao 1 ds moi
void create_List( TRO & L) {
add( L,taosv( 1001 ,"tran van" ,"thanh " ,"nam" ,1997 ,7.5 ) ) ;
add( L,taosv( 1002 ,"nguyen thi" ,"hong " ,"nu" ,1998 ,7.2 ) ) ;
add( L,taosv( 1003 ,"nguyen van" ,"hung " ,"nam" ,1996 ,6.4 ) ) ;
add( L,taosv( 1004 ,"bui thi" ,"bich " ,"nu" ,1998 ,8.6 ) ) ;
add( L,taosv( 1005 ,"duong van" ,"giang " ,"nam" ,1997 ,6.8 ) ) ;
}
void showList( TRO L) {
TRO Q;
if ( ! empty( L) ) {
cout << fixed;
cout << setw( 8 ) << left<< "Ma sv" ;
cout << setw( 10 ) << "ho dem " ;
cout << setw( 15 ) << "ten " ;
cout << setw( 15 ) << "gioi tinh" ;
cout << setw( 15 ) << right<< "nam sinh" ;
cout << setw( 10 ) << "Diem tk" ;
cout << endl;
Q= L;
while ( Q! = NULL ) {
display( Q- > infor) ;
Q= Q- > next;
}
}
else {
cout << "danh sach rong" << endl;
}
}
void xoa_pt( TRO & L) {
if ( empty( L) ) {
cout << "Danh sach rong" << endl;
return ;
}
TRO Q= L;
L= L- > next;
delete Q;
cout << "==========danh sach sau khi xoa==========" << endl;
showList( L) ;
}
//ham tim vi tri thu k-1
TRO search_k( TRO L,int k) {
int d= 1 ;
TRO Q= L;
while ( d< k- 1 && Q- > next ! = NULL ) {
d++ ;
Q= Q- > next;
}
if ( d< k- 1 ) {
return NULL ;
}
return Q;
}
//void chen
void insert( TRO & L,TRO Q,SV sv) {
TRO P;
P= new Node;
P- > infor= sv;
P- > next= Q- > next;
Q- > next= P;
}
void chen_vtri( TRO & L) {
TRO Q= search_k( L,3 ) ;
if ( Q== NULL ) {
cout << "khong the chen" << endl;
return ;
}
insert( L,Q,taosv( 1006 ,"le thi" ,"doan" ,"nu" ,1998 ,7.6 ) ) ;
cout << "=============danh sach sau khi chen=========" << endl;
showList( L) ;
}
void selectionSort( TRO L) {
TRO P,Q,M;
P= L;
while ( P- > next! = NULL ) {
M= P;
Q= P- > next;
while ( Q! = NULL ) {
if ( strcmp ( Q- > infor.ten ,M- > infor.ten ) < 0 ) {
M= Q;
}
Q= Q- > next;
}
SV tg= P- > infor;
P- > infor= M- > infor;
M- > infor= tg;
P= P- > next;
}
cout << "===========danh sach sau khi sap xep==========" << endl;
showList( L) ;
}
int main( int argc,char const * argv[ ] ) {
TRO L;
create( L) ;
create_List( L) ;
cout << "===========danh sach vua tao========" << endl;
showList( L) ;
xoa_pt( L) ;
// cout<<"===========danh sach sau khi xoa=========="<<endl;
//showList(L);
chen_vtri( L) ;
// cout<<"===========danh sach sau khi chen========"<<endl;
// showList(L);
selectionSort( L) ;
// cout<<"===========danh sach sau khi sap========"<<endl;
// showList(L);
return 0 ;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IFNWewoJaW50IG1zdjsKCWNoYXIgaG9kZW1bMzBdOwoJY2hhciB0ZW5bMTBdOwoJY2hhciBnaW9pdGluaFsxMF07CglpbnQgbmFtc2luaDsKCWRvdWJsZSBkaWVtdGs7Cn07CnN0cnVjdCBOb2RlewoJU1YgaW5mb3I7CglOb2RlKm5leHQ7Cn07CnR5cGVkZWYgTm9kZSpUUk87CnZvaWQgY3JlYXRlKFRSTyAmTCl7CglMPU5VTEw7Cn0KaW50IGVtcHR5KFRSTyAmTCl7CglyZXR1cm4oTD09TlVMTCk7Cn0KU1YgdGFvc3YoaW50IG1hLGNoYXIgaGRbMzBdLGNoYXIgdFsxMF0sY2hhciBndFsxMF0saW50IHksZG91YmxlIGQpewoJU1Ygc3Y7Cglzdi5tc3Y9bWE7CglzdHJjcHkoc3YuaG9kZW0saGQpOwoJc3RyY3B5KHN2LnRlbix0KTsKCXN0cmNweShzdi5naW9pdGluaCxndCk7Cglzdi5uYW1zaW5oPXk7Cglzdi5kaWVtdGs9ZDsKCXJldHVybiBzdjsKfQp2b2lkIGRpc3BsYXkoU1Ygc3YpewoJY291dDw8Zml4ZWQ7Cgljb3V0PDxzZXR3KDgpPDxsZWZ0PDxzdi5tc3Y7Cgljb3V0PDxzZXR3KDEwKTw8c3YuaG9kZW07Cgljb3V0PDxzZXR3KDkpPDxzdi50ZW47Cgljb3V0PDxzZXR3KDgpPDxzdi5naW9pdGluaDsKCWNvdXQ8PHNldHcoMTApPDxyaWdodDw8c3YubmFtc2luaDsKCWNvdXQ8PHNldHcoMTApPDxzZXRwcmVjaXNpb24oMik8PHN2LmRpZW10azsKCWNvdXQ8PGVuZGw7Cn0KLy9jaGVuIDEgbm9kZSB2YW8gY3VvaSBkcwp2b2lkIGFkZChUUk8gJkwgLFNWIHN2KXsKCVRSTyBQLCBRPUw7CglQPW5ldyBOb2RlOwoJUC0+aW5mb3I9c3Y7CglQLT5uZXh0PU5VTEw7CglpZihlbXB0eShMKSl7CgkJTD1QOwoJfQoJZWxzZXsKCQl3aGlsZShRLT5uZXh0IT1OVUxMKQoJCSAgIFE9US0+bmV4dDsKCQlRLT5uZXh0PVA7Cgl9Cn0KLy90YW8gMSBkcyBtb2kKdm9pZCBjcmVhdGVfTGlzdChUUk8gJkwpewoJYWRkKEwsdGFvc3YoMTAwMSwidHJhbiB2YW4iLCJ0aGFuaCAiLCJuYW0iLDE5OTcsNy41KSk7CglhZGQoTCx0YW9zdigxMDAyLCJuZ3V5ZW4gdGhpIiwiaG9uZyAiLCJudSIsMTk5OCw3LjIpKTsKCWFkZChMLHRhb3N2KDEwMDMsIm5ndXllbiB2YW4iLCJodW5nICIsIm5hbSIsMTk5Niw2LjQpKTsKCWFkZChMLHRhb3N2KDEwMDQsImJ1aSB0aGkiLCJiaWNoICIsIm51IiwxOTk4LDguNikpOwoJYWRkKEwsdGFvc3YoMTAwNSwiZHVvbmcgdmFuIiwiZ2lhbmcgIiwibmFtIiwxOTk3LDYuOCkpOwkKfQp2b2lkIHNob3dMaXN0KFRSTyBMKXsKCVRSTyBROwoJaWYoIWVtcHR5KEwpKXsKCWNvdXQ8PGZpeGVkOwoJY291dDw8c2V0dyg4KTw8bGVmdDw8Ik1hIHN2IjsKCWNvdXQ8PHNldHcoMTApPDwiaG8gZGVtICI7Cgljb3V0PDxzZXR3KDE1KTw8InRlbiAiOwoJY291dDw8c2V0dygxNSk8PCJnaW9pIHRpbmgiOwoJY291dDw8c2V0dygxNSk8PHJpZ2h0PDwibmFtIHNpbmgiOwoJY291dDw8c2V0dygxMCk8PCJEaWVtIHRrIjsKCWNvdXQ8PGVuZGw7CglRPUw7Cgl3aGlsZShRIT1OVUxMKXsKCQlkaXNwbGF5KFEtPmluZm9yKTsKCQlRPVEtPm5leHQ7Cgl9Cgl9CgllbHNlewoJCWNvdXQ8PCJkYW5oIHNhY2ggcm9uZyI8PGVuZGw7Cgl9Cn0Kdm9pZCB4b2FfcHQoVFJPICZMKXsKCWlmKGVtcHR5KEwpKXsKCQljb3V0PDwiRGFuaCBzYWNoIHJvbmciPDxlbmRsOwoJCXJldHVybjsKCX0KCVRSTyBRPUw7CglMPUwtPm5leHQ7CglkZWxldGUgUTsKCWNvdXQ8PCI9PT09PT09PT09ZGFuaCBzYWNoIHNhdSBraGkgeG9hPT09PT09PT09PSI8PGVuZGw7CglzaG93TGlzdChMKTsKfQovL2hhbSB0aW0gdmkgdHJpIHRodSBrLTEKVFJPIHNlYXJjaF9rKFRSTyBMLGludCBrKXsKCWludCBkPTE7CglUUk8gUT1MOwoJd2hpbGUoZDxrLTEgJiYgUS0+bmV4dCAhPU5VTEwpewoJCWQrKzsKCQlRPVEtPm5leHQ7Cgl9CglpZihkPGstMSl7CgkJcmV0dXJuIE5VTEw7Cgl9CglyZXR1cm4gUTsKfQovL3ZvaWQgY2hlbiAKdm9pZCBpbnNlcnQoVFJPICZMLFRSTyBRLFNWIHN2KXsKCVRSTyBQOwoJUD1uZXcgTm9kZTsKCVAtPmluZm9yPXN2OwoJUC0+bmV4dD1RLT5uZXh0OwoJUS0+bmV4dD1QOwp9CnZvaWQgY2hlbl92dHJpKFRSTyAmTCl7CglUUk8gUT1zZWFyY2hfayhMLDMpOwoJaWYoUT09TlVMTCl7CgkJY291dDw8Imtob25nIHRoZSBjaGVuIjw8ZW5kbDsKCQlyZXR1cm47Cgl9CglpbnNlcnQoTCxRLHRhb3N2KDEwMDYsImxlIHRoaSIsImRvYW4iLCJudSIsMTk5OCw3LjYpKTsKCWNvdXQ8PCI9PT09PT09PT09PT09ZGFuaCBzYWNoIHNhdSBraGkgY2hlbj09PT09PT09PSI8PGVuZGw7CglzaG93TGlzdChMKTsKfQp2b2lkIHNlbGVjdGlvblNvcnQoVFJPIEwpewoJVFJPIFAsUSxNOwoJUD1MOwoJd2hpbGUoUC0+bmV4dCE9TlVMTCl7CgkJTT1QOwoJCVE9UC0+bmV4dDsKCQl3aGlsZShRIT1OVUxMKXsKCQkJaWYoc3RyY21wKFEtPmluZm9yLnRlbixNLT5pbmZvci50ZW4pPDApewoJCQkJTT1ROwoJCQl9CgkJCVE9US0+bmV4dDsKCQl9CgkJU1YgdGc9UC0+aW5mb3I7CgkJUC0+aW5mb3I9TS0+aW5mb3I7CgkJTS0+aW5mb3I9dGc7CgkJUD1QLT5uZXh0OwoJfQoJY291dDw8Ij09PT09PT09PT09ZGFuaCBzYWNoIHNhdSBraGkgc2FwIHhlcD09PT09PT09PT0iPDxlbmRsOwoJc2hvd0xpc3QoTCk7Cn0KaW50IG1haW4oaW50IGFyZ2MsY2hhciBjb25zdCphcmd2W10pewoJVFJPIEw7CgljcmVhdGUoTCk7CgljcmVhdGVfTGlzdChMKTsKCWNvdXQ8PCI9PT09PT09PT09PWRhbmggc2FjaCB2dWEgdGFvPT09PT09PT0iPDxlbmRsOwoJc2hvd0xpc3QoTCk7Cgl4b2FfcHQoTCk7Ci8vCWNvdXQ8PCI9PT09PT09PT09PWRhbmggc2FjaCBzYXUga2hpIHhvYT09PT09PT09PT0iPDxlbmRsOwoJLy9zaG93TGlzdChMKTsKCWNoZW5fdnRyaShMKTsKLy8JY291dDw8Ij09PT09PT09PT09ZGFuaCBzYWNoIHNhdSBraGkgY2hlbj09PT09PT09Ijw8ZW5kbDsKLy8Jc2hvd0xpc3QoTCk7CglzZWxlY3Rpb25Tb3J0KEwpOwovLwljb3V0PDwiPT09PT09PT09PT1kYW5oIHNhY2ggc2F1IGtoaSBzYXA9PT09PT09PSI8PGVuZGw7Ci8vCXNob3dMaXN0KEwpOwoJcmV0dXJuIDA7Cn0=