#include<bits/stdc++.h>
using namespace std;
#define MAX 8
struct HH{
char mahang[ 20 ] ;
char tenhang[ 30 ] ;
char donvi[ 10 ] ;
int dongia,soluong;
} ;
struct Node{
HH infor;
Node * next;
} ;
typedef Node * TRO;
void creat( TRO& L) {
L= NULL ;
}
int empty( TRO & L) {
return ( L== NULL ) ;
}
HH taohh( char mh[ 20 ] ,char th[ 30 ] ,char dv[ 10 ] ,int dg,int sl ) {
HH hh;
strcpy ( hh.mahang ,mh) ;
strcpy ( hh.tenhang ,th) ;
strcpy ( hh.donvi ,dv) ;
hh.dongia = dg;
hh.soluong = sl;
return hh;
}
void display( HH hh) {
cout << fixed;
cout << setw( 8 ) << left<< hh.mahang ;
cout << setw( 15 ) << hh.tenhang ;
cout << setw( 20 ) << hh.donvi ;
cout << setw( 20 ) << hh.dongia ;
cout << setw( 15 ) << hh.soluong ;
cout << setw( 15 ) << hh.soluong * hh.dongia ;
cout << endl;
}
void add( TRO & L,HH hh) {
TRO P,Q= L;
P= new Node;
P- > infor= hh;
P- > next= NULL ;
if ( empty( L) ) {
L= P;
}
else {
while ( Q- > next! = NULL )
Q= Q- > next;
Q- > next= P;
}
}
void create_List( TRO & L) {
add( L,taohh( "H2001" ,"vo" ,"quyen" ,6500 ,20 ) ) ;
add( L,taohh( "H2002" ,"but chi" ,"cai" ,12000 ,50 ) ) ;
add( L,taohh( "H2003" ,"hop but" ,"chiec" ,35000 ,15 ) ) ;
add( L,taohh( "H2004" ,"tay " ,"cai" ,10000 ,50 ) ) ;
add( L,taohh( "H2005" ,"thuoc ke" ,"cai" ,7000 ,55 ) ) ;
add( L,taohh( "H2001" ,"muc" ,"lo" ,15000 ,28 ) ) ;
}
void showList( TRO L) {
TRO Q;
if ( ! empty( L) ) {
cout << setw( 8 ) << left<< "ma hang" ;
cout << setw( 15 ) << "ten hang" ;
cout << setw( 20 ) << "don vi" ;
cout << setw( 20 ) << "don gia" ;
cout << setw( 15 ) << "so luong" ;
cout << setw( 15 ) << "thanh tien" ;
cout << endl;
Q= L;
while ( Q! = NULL ) {
display( Q- > infor) ;
Q= Q- > next;
}
}
else {
cout << "danh sach rong " << endl;
}
}
void xoa_pt_dau( 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 PHAN TU DAU ===================" << endl;
showList( L) ;
}
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 insert( TRO & L,TRO Q,HH hh) {
TRO P= new Node;
P- > infor= hh;
P- > next= Q- > next;
Q- > next= P;
}
void chen_vt_dau( TRO& L) {
TRO Q= search_k( L,1 ) ;
if ( Q== NULL ) {
cout << "khong the chen" << endl;
return ;
}
insert( L,Q,taohh( "2007" ,"phan" ,"hop" ,15 ,45000 ) ) ;
cout << "=========================DANH SACH SAU KHI CHEN ========================" << endl;
showList( L) ;
}
void sort( TRO & L) {
if ( L== NULL || L- > next== NULL )
return ;
bool swapped;
TRO ptr1;
TRO lptr= NULL ;
do {
swapped= false ;
ptr1= L;
while ( ptr1- > next ! = lptr) {
if ( strcmp ( ptr1- > infor.tenhang ,ptr1- > next- > infor.tenhang ) > 0 ) {
swap( ptr1- > infor,ptr1- > next- > infor) ;
swapped= true ;
}
ptr1= ptr1- > next;
}
lptr= ptr1;
}
while ( swapped) ;
cout << "=====================DANH SACH SAU KHI SAP XEP=====================" << endl;
showList( L) ;
}
int main( int argc,char const * argv[ ] ) {
TRO L;
creat( L) ;
create_List( L) ;
cout << "==========================DANH SACH BAN DAU=================" << endl;
showList( L) ;
xoa_pt_dau( L) ;
chen_vt_dau( L) ;
sort( L) ;
return 0 ;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBNQVggOApzdHJ1Y3QgSEh7CgljaGFyIG1haGFuZ1syMF07CgljaGFyIHRlbmhhbmdbMzBdOwoJY2hhciBkb252aVsxMF07CglpbnQgZG9uZ2lhLHNvbHVvbmc7Cn07CnN0cnVjdCBOb2RlewoJSEggaW5mb3I7CglOb2RlICpuZXh0Owp9Owp0eXBlZGVmIE5vZGUgKlRSTzsKdm9pZCBjcmVhdChUUk8mIEwpewoJTD1OVUxMOwp9CmludCBlbXB0eShUUk8gJkwpewoJcmV0dXJuIChMPT1OVUxMKTsKfQpISCB0YW9oaChjaGFyIG1oWzIwXSxjaGFyIHRoWzMwXSxjaGFyIGR2WzEwXSxpbnQgZGcsaW50IHNsICl7CglISCBoaDsKCXN0cmNweShoaC5tYWhhbmcsbWgpOwoJc3RyY3B5KGhoLnRlbmhhbmcsdGgpOwoJc3RyY3B5KGhoLmRvbnZpLGR2KTsKCWhoLmRvbmdpYT1kZzsKCWhoLnNvbHVvbmc9c2w7CglyZXR1cm4gaGg7Cn0Kdm9pZCBkaXNwbGF5KEhIIGhoKXsKCWNvdXQ8PGZpeGVkOwoJY291dDw8c2V0dyg4KTw8bGVmdDw8aGgubWFoYW5nOwoJY291dDw8c2V0dygxNSk8PGhoLnRlbmhhbmc7Cgljb3V0PDxzZXR3KDIwKTw8aGguZG9udmk7Cgljb3V0PDxzZXR3KDIwKTw8aGguZG9uZ2lhOwoJY291dDw8c2V0dygxNSk8PGhoLnNvbHVvbmc7Cgljb3V0PDxzZXR3KDE1KTw8aGguc29sdW9uZyAqaGguZG9uZ2lhOwoJY291dDw8ZW5kbDsKfQp2b2lkIGFkZChUUk8gJkwsSEggaGgpewoJVFJPIFAsUT1MOwoJUD1uZXcgTm9kZTsKCVAtPmluZm9yPWhoOwoJUC0+bmV4dD1OVUxMOwoJaWYoZW1wdHkoTCkpewoJCUw9UDsKCX0KCWVsc2V7CgkJd2hpbGUoUS0+bmV4dCE9TlVMTCkKCQkgIFE9US0+bmV4dDsKCQkgIFEtPm5leHQ9UDsKCX0KfQp2b2lkIGNyZWF0ZV9MaXN0KFRSTyAmTCl7CglhZGQoTCx0YW9oaCgiSDIwMDEiLCJ2byIsInF1eWVuIiw2NTAwLDIwKSk7CglhZGQoTCx0YW9oaCgiSDIwMDIiLCJidXQgY2hpIiwiY2FpIiwxMjAwMCw1MCkpOwoJYWRkKEwsdGFvaGgoIkgyMDAzIiwiaG9wIGJ1dCIsImNoaWVjIiwzNTAwMCwxNSkpOwoJYWRkKEwsdGFvaGgoIkgyMDA0IiwidGF5ICIsImNhaSIsMTAwMDAsNTApKTsKCWFkZChMLHRhb2hoKCJIMjAwNSIsInRodW9jIGtlIiwiY2FpIiw3MDAwLDU1KSk7CglhZGQoTCx0YW9oaCgiSDIwMDEiLCJtdWMiLCJsbyIsMTUwMDAsMjgpKTsKfQp2b2lkIHNob3dMaXN0KFRSTyBMKXsKCVRSTyBROwoJaWYoIWVtcHR5KEwpKXsKCWNvdXQ8PHNldHcoOCk8PGxlZnQ8PCJtYSBoYW5nIjsKCWNvdXQ8PHNldHcoMTUpPDwidGVuIGhhbmciOwoJY291dDw8c2V0dygyMCk8PCJkb24gdmkiOwoJY291dDw8c2V0dygyMCk8PCJkb24gZ2lhIjsKCWNvdXQ8PHNldHcoMTUpPDwic28gbHVvbmciOwoJY291dDw8c2V0dygxNSk8PCJ0aGFuaCB0aWVuIjsKCWNvdXQ8PGVuZGw7CglRPUw7Cgl3aGlsZShRIT1OVUxMKXsKCQlkaXNwbGF5KFEtPmluZm9yKTsKCQlRPVEtPm5leHQ7CgkKICAgICAgfQoJfQoJZWxzZXsKCQljb3V0PDwiZGFuaCBzYWNoIHJvbmcgIjw8ZW5kbDsKCX0KfQp2b2lkIHhvYV9wdF9kYXUoVFJPICZMKXsKCWlmKGVtcHR5KEwpKXsKCQljb3V0PDwiZGFuaCBzYWNoIHJvbmcgIjw8ZW5kbDsKCQlyZXR1cm47Cgl9CglUUk8gUT1MOwoJTD1MLT5uZXh0OwoJZGVsZXRlIFE7Cgljb3V0PDwiPT09PT09PT09PT09PT09PT1EQU5IIFNBQ0ggU0FVIEtISSBYT0EgUEhBTiBUVSBEQVUgPT09PT09PT09PT09PT09PT09PSI8PGVuZGw7CglzaG93TGlzdChMKTsKfQpUUk8gc2VhcmNoX2soVFJPJkwsaW50IGspewoJaW50IGQ9MTsKCVRSTyBRPUw7Cgl3aGlsZShkPGstMSAmJiBRLT5uZXh0IT1OVUxMKXsKCQlkKys7CgkJUT1RLT5uZXh0OwoJfQoJaWYoZDxrLTEpewoJCXJldHVybiBOVUxMOwoJfQoJcmV0dXJuIFE7Cn0Kdm9pZCBpbnNlcnQoVFJPICZMLFRSTyBRLEhIIGhoKXsKCVRSTyBQPW5ldyBOb2RlOwoJUC0+aW5mb3I9aGg7CglQLT5uZXh0PVEtPm5leHQ7CglRLT5uZXh0PVA7Cn0Kdm9pZCBjaGVuX3Z0X2RhdShUUk8mTCl7CglUUk8gUT1zZWFyY2hfayhMLDEpOwoJaWYoUT09TlVMTCl7CgkJY291dDw8Imtob25nIHRoZSBjaGVuIjw8ZW5kbDsKCQlyZXR1cm47Cgl9CglpbnNlcnQoTCxRLHRhb2hoKCIyMDA3IiwicGhhbiIsImhvcCIsMTUsNDUwMDApKTsKCWNvdXQ8PCI9PT09PT09PT09PT09PT09PT09PT09PT09REFOSCBTQUNIIFNBVSBLSEkgQ0hFTiA9PT09PT09PT09PT09PT09PT09PT09PT0iPDxlbmRsOwoJc2hvd0xpc3QoTCk7Cn0Kdm9pZCBzb3J0KFRSTyAmTCl7CglpZihMPT1OVUxMIHx8IEwtPm5leHQ9PU5VTEwpCglyZXR1cm4gOwoJYm9vbCBzd2FwcGVkOwoJVFJPIHB0cjE7CglUUk8gbHB0cj1OVUxMOwoJZG97CgkJc3dhcHBlZD1mYWxzZTsKCQlwdHIxPUw7CgkJd2hpbGUocHRyMS0+bmV4dCAhPWxwdHIpewoJCQlpZihzdHJjbXAocHRyMS0+aW5mb3IudGVuaGFuZyxwdHIxLT5uZXh0LT5pbmZvci50ZW5oYW5nKT4wKXsKCQkJCXN3YXAocHRyMS0+aW5mb3IscHRyMS0+bmV4dC0+aW5mb3IpOwoJCQkJc3dhcHBlZD10cnVlOwoJCQl9CgkJCXB0cjE9cHRyMS0+bmV4dDsKCQl9CgkJbHB0cj1wdHIxOwoJfQoJd2hpbGUoc3dhcHBlZCk7CgkJY291dDw8Ij09PT09PT09PT09PT09PT09PT09PURBTkggU0FDSCBTQVUgS0hJIFNBUCBYRVA9PT09PT09PT09PT09PT09PT09PT0iPDxlbmRsOwoJCXNob3dMaXN0KEwpOwp9CmludCBtYWluKGludCBhcmdjLGNoYXIgY29uc3QqYXJndltdKXsKICAgIFRSTyBMOwoJY3JlYXQoTCk7CgljcmVhdGVfTGlzdChMKTsKCWNvdXQ8PCI9PT09PT09PT09PT09PT09PT09PT09PT09PURBTkggU0FDSCBCQU4gREFVPT09PT09PT09PT09PT09PT0iPDxlbmRsOwoJc2hvd0xpc3QoTCk7Cgl4b2FfcHRfZGF1KEwpOwoJY2hlbl92dF9kYXUoTCk7Cglzb3J0KEwpOwkKCXJldHVybiAwOwp9