//(c)Terminator
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct info {
int day, month, year;
};
struct info info_set(int day, int month, int year){
struct info inf;
inf.day = day;
inf.month = month;
inf.year = year;
return inf;
}
struct der {
struct info inf;
int n;
struct der* l;
struct der* r;
};
int der_add(struct der** tr, struct info inf, int n);
void der_print(FILE* hout, struct der* tr);
void der_clear(struct der* tr);
int main(void){
int i;
struct der* t = NULL;
for(i = 0; i < 20; ++i)
der_print(stdout, t);
der_clear(t);
return 0;
}
//добавление
int der_add(struct der** tr, struct info inf, int n){
struct der* p = *tr;
while(p != NULL){
if(n < p->n) {
tr = &p->l;
p = p->l;
} else if(n > p->n){
tr = &p->r;
p = p->r;
} else
return 0;
}
p
= (struct der
*)malloc(sizeof(struct der
)); if(p != NULL){
p->inf = inf;
p->n = n;
p->l = p->r = NULL;
*tr = p;
}
return (p != NULL);
}
//печать
void der_print(FILE* hout, struct der* tr){
if(tr != NULL){
if(tr->l != NULL)
der_print(hout, tr->l);
fprintf(hout
, "n: %d\tdate: %02d.%02d.%d\n", tr->n, tr->inf.day, tr->inf.month, tr->inf.year);
if(tr->r != NULL)
der_print(hout, tr->r);
}
}
//чистка
void der_clear(struct der* tr){
if(tr != NULL){
if(tr->l != NULL)
der_clear(tr->l);
if(tr->r != NULL)
der_clear(tr->r);
}
}
Ly8oYylUZXJtaW5hdG9yCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4KCgpzdHJ1Y3QgaW5mbyB7CglpbnQgZGF5LCBtb250aCwgeWVhcjsKfTsKCnN0cnVjdCBpbmZvIGluZm9fc2V0KGludCBkYXksIGludCBtb250aCwgaW50IHllYXIpewoJc3RydWN0IGluZm8gaW5mOwoJaW5mLmRheSAgID0gZGF5OwoJaW5mLm1vbnRoID0gbW9udGg7CglpbmYueWVhciAgPSB5ZWFyOwoJcmV0dXJuIGluZjsKfQoKCnN0cnVjdCBkZXIgewoJc3RydWN0IGluZm8gaW5mOwoJaW50ICAgIG47CglzdHJ1Y3QgZGVyKiBsOwoJc3RydWN0IGRlciogcjsKfTsKCmludCAgZGVyX2FkZChzdHJ1Y3QgZGVyKiogdHIsIHN0cnVjdCBpbmZvIGluZiwgaW50IG4pOwp2b2lkIGRlcl9wcmludChGSUxFKiBob3V0LCBzdHJ1Y3QgZGVyKiB0cik7CnZvaWQgZGVyX2NsZWFyKHN0cnVjdCBkZXIqIHRyKTsKCgoKaW50IG1haW4odm9pZCl7CglpbnQgaTsKCXN0cnVjdCBkZXIqIHQgPSBOVUxMOwoKCWZvcihpID0gMDsgaSA8IDIwOyArK2kpCgkJZGVyX2FkZCgmdCwgaW5mb19zZXQocmFuZCgpJTI5LCByYW5kKCklMTIsIDIwMTIrKHJhbmQoKSUzKSksIHJhbmQoKSU1MCk7CgkKCWRlcl9wcmludChzdGRvdXQsIHQpOwoJZGVyX2NsZWFyKHQpOwoJcmV0dXJuIDA7Cn0KCgovL9C00L7QsdCw0LLQu9C10L3QuNC1CmludCAgZGVyX2FkZChzdHJ1Y3QgZGVyKiogdHIsIHN0cnVjdCBpbmZvIGluZiwgaW50IG4pewoJc3RydWN0IGRlciogcCA9ICp0cjsKCgl3aGlsZShwICE9IE5VTEwpewoJCWlmKG4gPCBwLT5uKSB7CgkJCXRyID0gJnAtPmw7CgkJCXAgID0gcC0+bDsKCQl9IGVsc2UgaWYobiA+IHAtPm4pewoJCQl0ciA9ICZwLT5yOwoJCQlwICA9IHAtPnI7CgkJfSBlbHNlCgkJCXJldHVybiAwOwoJfQoKCXAgPSAoc3RydWN0IGRlciopbWFsbG9jKHNpemVvZihzdHJ1Y3QgZGVyKSk7CglpZihwICE9IE5VTEwpewoJCXAtPmluZiA9IGluZjsKCQlwLT5uICAgPSBuOwoJCXAtPmwgICA9IHAtPnIgPSBOVUxMOwoJCSp0ciAgPSBwOwoJfQoJcmV0dXJuIChwICE9IE5VTEwpOwp9CgoKLy/Qv9C10YfQsNGC0YwKdm9pZCBkZXJfcHJpbnQoRklMRSogaG91dCwgc3RydWN0IGRlciogdHIpewoJaWYodHIgIT0gTlVMTCl7CgkJaWYodHItPmwgIT0gTlVMTCkKCQkJZGVyX3ByaW50KGhvdXQsIHRyLT5sKTsKCgkJZnByaW50Zihob3V0LCAibjogJWRcdGRhdGU6ICUwMmQuJTAyZC4lZFxuIiwgCgkJICAgICAgICB0ci0+biwgdHItPmluZi5kYXksIHRyLT5pbmYubW9udGgsIHRyLT5pbmYueWVhcik7CgoJCWlmKHRyLT5yICE9IE5VTEwpCgkJCWRlcl9wcmludChob3V0LCB0ci0+cik7Cgl9Cn0KCi8v0YfQuNGB0YLQutCwCnZvaWQgZGVyX2NsZWFyKHN0cnVjdCBkZXIqIHRyKXsKCWlmKHRyICE9IE5VTEwpewoJCWlmKHRyLT5sICE9IE5VTEwpCgkJCWRlcl9jbGVhcih0ci0+bCk7CgkJaWYodHItPnIgIT0gTlVMTCkKCQkJZGVyX2NsZWFyKHRyLT5yKTsKCQlmcmVlKHRyKTsKCX0KfQ==