#include <iostream>
using namespace std;
struct Node
{
int value;
Node *next;
};
void removeDivFive(Node* head){
int count = 0;
Node *temp = head, *next;
while (temp != NULL){
count++;
if ((count % 4) == 0){
if (temp->next != NULL){
next = temp->next->next;
delete temp->next;
temp->next = next;
}
}
temp = temp->next;
}
}
void display(Node* head)
{
while (head != NULL){
cout << head->value << ' ';
head = head->next;
}
cout << endl;
}
void clear(Node* head)
{
while (head != NULL){
Node *next = head->next;
delete head;
head = next;
}
}
int main()
{
Node *head = NULL, **temp = &head;
for(int i = 1; i <= 20; ++i)
{
*temp = new Node{i, NULL};
temp = &((*temp)->next);
}
display(head);
removeDivFive(head);
display(head);
clear(head);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IE5vZGUKewoJaW50IHZhbHVlOwoJTm9kZSAqbmV4dDsKfTsKCnZvaWQgcmVtb3ZlRGl2Rml2ZShOb2RlKiBoZWFkKXsKICAgIGludCBjb3VudCA9IDA7CiAgICBOb2RlICp0ZW1wID0gaGVhZCwgKm5leHQ7CiAgICAKICAgIHdoaWxlICh0ZW1wICE9IE5VTEwpewogICAgICAgIGNvdW50Kys7CiAgICAgICAgaWYgKChjb3VudCAlIDQpID09IDApewogICAgICAgICAgICBpZiAodGVtcC0+bmV4dCAhPSBOVUxMKXsKICAgICAgICAgICAgICAgIG5leHQgPSB0ZW1wLT5uZXh0LT5uZXh0OwogICAgICAgICAgICAgICAgZGVsZXRlIHRlbXAtPm5leHQ7CiAgICAgICAgICAgICAgICB0ZW1wLT5uZXh0ID0gbmV4dDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0ZW1wID0gdGVtcC0+bmV4dDsKICAgIH0KfQoKdm9pZCBkaXNwbGF5KE5vZGUqIGhlYWQpCnsKCXdoaWxlIChoZWFkICE9IE5VTEwpewogICAgICAgIGNvdXQgPDwgaGVhZC0+dmFsdWUgPDwgJyAnOwogICAgICAgIGhlYWQgPSBoZWFkLT5uZXh0OwogICAgfQogICAgY291dCA8PCBlbmRsOwp9Cgp2b2lkIGNsZWFyKE5vZGUqIGhlYWQpCnsKCXdoaWxlIChoZWFkICE9IE5VTEwpewoJCU5vZGUgKm5leHQgPSBoZWFkLT5uZXh0OwogICAgICAgIGRlbGV0ZSBoZWFkOwogICAgICAgIGhlYWQgPSBuZXh0OwogICAgfQp9CgppbnQgbWFpbigpCnsKCU5vZGUgKmhlYWQgPSBOVUxMLCAqKnRlbXAgPSAmaGVhZDsKCWZvcihpbnQgaSA9IDE7IGkgPD0gMjA7ICsraSkKCXsKCQkqdGVtcCA9IG5ldyBOb2Rle2ksIE5VTEx9OwoJCXRlbXAgPSAmKCgqdGVtcCktPm5leHQpOwoJfQoJCglkaXNwbGF5KGhlYWQpOwoJcmVtb3ZlRGl2Rml2ZShoZWFkKTsKCWRpc3BsYXkoaGVhZCk7CgljbGVhcihoZWFkKTsKCQoJcmV0dXJuIDA7Cn0=