#include<bits/stdc++.h>
using namespace std;
struct Book{
string ten;
int sotrang;
};
struct Node{
Book data;
Node *next;
Node(string t, int st){
data.ten = t;
data.sotrang = st;
next = nullptr;
}
};
void addB(Node *&head, string t, int st){
Node *newNode = new Node(t, st);
if(head == nullptr){
head = newNode;
return;
}
Node *temp = head;
while(temp->next != nullptr){
temp = temp->next;
}
temp->next = newNode;
}
void printB(Node *head){
Node *temp = head;
if(head == nullptr){
cout << "Rong!" << endl;
return;
}
while (temp != nullptr){
cout << temp->data.ten << "\t - \t" << temp->data.sotrang << endl;
temp = temp->next;
}
}
int countT(Node *head){
Node *temp = head;
int dem = 0;
while(temp != nullptr){
if(temp->data.sotrang > 500){
dem++;
}
temp = temp->next;
}
return dem;
}
void deleteB(Node *&head){
Node *temp = head;
int nho = temp->data.sotrang;
while(temp != nullptr){
if(nho > temp->data.sotrang){
nho = temp->data.sotrang;
}
temp = temp->next;
}
while (head != nullptr && head->data.sotrang == nho){
Node *xoa = head;
head = head->next;
delete xoa;
}
Node *tam = head;
while(tam != nullptr && tam->next != nullptr){
if(tam->next->data.sotrang == nho){
Node *xoa = tam->next;
tam->next = tam->next->next;
delete xoa;
} else {
tam = tam->next;
}
}
}
int main(){
Node *head = nullptr;
cout << "-----Danh sach sach-----" << endl;
addB(head, "Doraemon", 200);
addB(head, "Toan Roi Rac", 750);
addB(head, "Doraemon", 200);
addB(head, "Giai tich 1", 200);
addB(head, "Toan Logic", 300);
addB(head, "Tieng Viet", 1750);
printB(head);
cout << endl << "So sach lon hon 500 trang: ";
cout << countT(head);
deleteB(head);
cout << endl << "Sau khi xoa so trang nho nhat!" << endl;
printB(head);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBCb29rewoJc3RyaW5nIHRlbjsKCWludCBzb3RyYW5nOwp9OwoKc3RydWN0IE5vZGV7CglCb29rIGRhdGE7CglOb2RlICpuZXh0OwoJTm9kZShzdHJpbmcgdCwgaW50IHN0KXsKCQlkYXRhLnRlbiA9IHQ7CgkJZGF0YS5zb3RyYW5nID0gc3Q7CgkJbmV4dCA9IG51bGxwdHI7Cgl9Cn07Cgp2b2lkIGFkZEIoTm9kZSAqJmhlYWQsIHN0cmluZyB0LCBpbnQgc3QpewoJTm9kZSAqbmV3Tm9kZSA9IG5ldyBOb2RlKHQsIHN0KTsKCWlmKGhlYWQgPT0gbnVsbHB0cil7CgkJaGVhZCA9IG5ld05vZGU7CgkJcmV0dXJuOwoJfQoJTm9kZSAqdGVtcCA9IGhlYWQ7Cgl3aGlsZSh0ZW1wLT5uZXh0ICE9IG51bGxwdHIpewoJCXRlbXAgPSB0ZW1wLT5uZXh0OwoJfQoJdGVtcC0+bmV4dCA9IG5ld05vZGU7Cn0KCnZvaWQgcHJpbnRCKE5vZGUgKmhlYWQpewoJTm9kZSAqdGVtcCA9IGhlYWQ7CglpZihoZWFkID09IG51bGxwdHIpewoJCWNvdXQgPDwgIlJvbmchIiA8PCBlbmRsOwoJCXJldHVybjsKCX0KCXdoaWxlICh0ZW1wICE9IG51bGxwdHIpewoJCWNvdXQgPDwgdGVtcC0+ZGF0YS50ZW4gPDwgIlx0IC0gXHQiIDw8IHRlbXAtPmRhdGEuc290cmFuZyA8PCBlbmRsOwoJCXRlbXAgPSB0ZW1wLT5uZXh0OwoJfQp9CgppbnQgY291bnRUKE5vZGUgKmhlYWQpewoJTm9kZSAqdGVtcCA9IGhlYWQ7CglpbnQgZGVtID0gMDsKCXdoaWxlKHRlbXAgIT0gbnVsbHB0cil7CgkJaWYodGVtcC0+ZGF0YS5zb3RyYW5nID4gNTAwKXsKCQkJZGVtKys7CgkJfQoJCXRlbXAgPSB0ZW1wLT5uZXh0OwoJfQoJcmV0dXJuIGRlbTsKfQoKdm9pZCBkZWxldGVCKE5vZGUgKiZoZWFkKXsKCU5vZGUgKnRlbXAgPSBoZWFkOwoJaW50IG5obyA9IHRlbXAtPmRhdGEuc290cmFuZzsKCXdoaWxlKHRlbXAgIT0gbnVsbHB0cil7CgkJaWYobmhvID4gdGVtcC0+ZGF0YS5zb3RyYW5nKXsKCQkJbmhvID0gdGVtcC0+ZGF0YS5zb3RyYW5nOwoJCX0KCQl0ZW1wID0gdGVtcC0+bmV4dDsKCX0KCXdoaWxlIChoZWFkICE9IG51bGxwdHIgJiYgaGVhZC0+ZGF0YS5zb3RyYW5nID09IG5obyl7CgkJTm9kZSAqeG9hID0gaGVhZDsKCQloZWFkID0gaGVhZC0+bmV4dDsKCQlkZWxldGUgeG9hOwoJfQoJTm9kZSAqdGFtID0gaGVhZDsKCXdoaWxlKHRhbSAhPSBudWxscHRyICYmIHRhbS0+bmV4dCAhPSBudWxscHRyKXsKCQlpZih0YW0tPm5leHQtPmRhdGEuc290cmFuZyA9PSBuaG8pewoJCQlOb2RlICp4b2EgPSB0YW0tPm5leHQ7CgkJCXRhbS0+bmV4dCA9IHRhbS0+bmV4dC0+bmV4dDsKCQkJZGVsZXRlIHhvYTsKCQl9IGVsc2UgewoJCQl0YW0gPSB0YW0tPm5leHQ7CgkJfQoJfQp9CgppbnQgbWFpbigpewoJTm9kZSAqaGVhZCA9IG51bGxwdHI7Cgljb3V0IDw8ICItLS0tLURhbmggc2FjaCBzYWNoLS0tLS0iIDw8IGVuZGw7CglhZGRCKGhlYWQsICJEb3JhZW1vbiIsIDIwMCk7CglhZGRCKGhlYWQsICJUb2FuIFJvaSBSYWMiLCA3NTApOwoJYWRkQihoZWFkLCAiRG9yYWVtb24iLCAyMDApOwoJYWRkQihoZWFkLCAiR2lhaSB0aWNoIDEiLCAyMDApOwoJYWRkQihoZWFkLCAiVG9hbiBMb2dpYyIsIDMwMCk7CglhZGRCKGhlYWQsICJUaWVuZyBWaWV0IiwgMTc1MCk7CglwcmludEIoaGVhZCk7Cgljb3V0IDw8IGVuZGwgPDwgIlNvIHNhY2ggbG9uIGhvbiA1MDAgdHJhbmc6ICI7Cgljb3V0IDw8IGNvdW50VChoZWFkKTsKCWRlbGV0ZUIoaGVhZCk7Cgljb3V0IDw8IGVuZGwgPDwgIlNhdSBraGkgeG9hIHNvIHRyYW5nIG5obyBuaGF0ISIgPDwgZW5kbDsKCXByaW50QihoZWFkKTsKCXJldHVybiAwOwp9