// Nh?p thông tin cho 1 ph?n t? node* _input () { node * q = new node ; cout<< "\nHo ten : " ; fflush (stdin) ; gets ( q -> info.ht ) ; cout<< "Nhap nam sinh : " ; cin>> q -> info.ns ; q -> next = q -> prev = NULL ; return q ; }
// B? sung 1 ph?n t? vào cu?i danh sách void AddTail (List & L ) { new_ele = _input () ; // Nh?p thông tin c?a ph?n t? m?i if ( L.head == NULL ) // Ki?m tra danh sách r?ng { //N?u ds r?ng thì //head = new_ele; //tail = head; L.head = L.tail = new_ele ; } else { //Ngu?c l?i //tail = new_ele->prev; //tail->next = new_ele; //tail = new_ele; new_ele -> prev = L.tail ; L.tail -> next = new_ele; L.tail = new_ele; } } // In ra danh sách h?c sinh có nam sinh t? 1980 tr? v? dây
void Process ( List L ) { node * p = L.head ; // con tr? p tr? t?i ph?n t? d?u tiên c?a danh sách if ( L.head == NULL ) //Ki?m tra danh sách r?ng cout<< "\nDanh sach rong !!! " ; cout<<"\n\n============================================\n"; cout<< "\nDanh sach nhung nguoi sinh sau nam 1980 : \n " ; while ( p -> next != NULL ) { if ( p -> info.ns > 1980 ) //Trong khi (p!=NULL)& ( p -> info.ns > 1980 ) //Th?c hi?n: //Xu?t ra thông tin p //p = p->next; { cout<<"\nHo ten : "<<p ->info.ht ; cout<<"\nNam sinh :"<<p->info.ns; cout<<"\n"; } p = p->next; } } //Xóa thông tin h?c sinh cu?i danh sách void DelTail ( List & L ) { node * p ; if ( L.tail != NULL ) // N?u danh sách khác r?ng { L.tail = p ; //p là ph?n t? c?n h?y //Tách p ra kh?i xâu L.tail = L.tail -> prev ; L.tail -> next = NULL ; delete p ; //H?y bi?n do p tr? d?n if ( L.head == NULL ) //N?u nút d?u là r?ng thì nút cu?i r?ng L.tail = NULL ; else //ngu?c l?i head->prev = NULL; L.head -> prev = NULL ; } }
void main () { List L ; CreatList(L) ; int t = 1 ; cout<<"\nThem 1 phan tu vao cuoi danh sach "; while ( t ==1 ) { AddTail ( L) ; cout<< "Tiep tuc nhap ? ( 1 / 0 ) : " ; cin>> t ; } Process( L ) ; }
// Nh?p thông tin cho 1 ph?n t? node* _input () { node * q = new node ; cout<< "\nHo ten : " ; //fflush (stdin) ; cin.ignore(); cin.getline(q -> info.ht,30) ; cout<< "Nhap nam sinh : " ; cin>> q -> info.ns ; q -> next = q -> prev = NULL ; return q ; }
// B? sung 1 ph?n t? vào cu?i danh sách void AddTail (List & L ) { new_ele = _input () ; // Nh?p thông tin c?a ph?n t? m?i if ( L.head == NULL ) // Ki?m tra danh sách r?ng { //N?u ds r?ng thì //head = new_ele; //tail = head; L.head = L.tail = new_ele ; } else { //Ngu?c l?i //tail = new_ele->prev; //tail->next = new_ele; //tail = new_ele; new_ele -> prev = L.tail ; L.tail -> next = new_ele; L.tail = new_ele; } } // In ra danh sách h?c sinh có nam sinh t? 1980 tr? v? dây
void Process ( List L ) { node * p = L.head ; // con tr? p tr? t?i ph?n t? d?u tiên c?a danh sách if ( L.head == NULL ) //Ki?m tra danh sách r?ng cout<< "\nDanh sach rong !!! " ; cout<<"\n\n============================================\n"; cout<< "\nDanh sach nhung nguoi sinh sau nam 1980 : \n " ; while ( p -> next != NULL ) { if ( p -> info.ns > 1980 ) //Trong khi (p!=NULL)& ( p -> info.ns > 1980 ) //Th?c hi?n: //Xu?t ra thông tin p //p = p->next; { cout<<"\nHo ten : "<<p ->info.ht ; cout<<"\nNam sinh :"<<p->info.ns; cout<<"\n"; } p = p->next; } } //Xóa thông tin h?c sinh cu?i danh sách void DelTail ( List & L ) { node * p ; if ( L.tail != NULL ) // N?u danh sách khác r?ng { L.tail = p ; //p là ph?n t? c?n h?y //Tách p ra kh?i xâu L.tail = L.tail -> prev ; L.tail -> next = NULL ; delete p ; //H?y bi?n do p tr? d?n if ( L.head == NULL ) //N?u nút d?u là r?ng thì nút cu?i r?ng L.tail = NULL ; else //ngu?c l?i head->prev = NULL; L.head -> prev = NULL ; } }
void main () { List L ; CreatList(L) ; int t = 1 ; cout<<"\nThem 1 phan tu vao cuoi danh sach "; while ( t ==1 ) { AddTail ( L) ; cout<< "Tiep tuc nhap ? ( 1 / 0 ) : " ; cin>> t ; } Process( L ) ; }