#include <stdio.h>
#include <malloc.h>
struct node {
int val;
struct node* next;
};
int stack_push(struct node** st, int val);
void stack_pop(struct node** st);
//разделение стека на два стека
void stack_split(struct node** s1,
struct node** s2,
struct node** st){
struct node* p = *st;
for(*s1 = *s2 = NULL; p != NULL; ){
if(p->val % 2){
*s1 = p;
p = p->next;
s1 = &(*s1)->next;
} else {
*s2 = p;
p = p->next;
s2 = &(*s2)->next;
}
}
*s1 = *s2 = *st = NULL;
}
int main(void){
int i;
struct node* s1, *s2, *st = NULL;
for(i = 0; i < 30; ++i)
stack_push(&st, i);
stack_split(&s1, &s2, &st);
//адреса
printf("addr ptr - s1: 0x%08X\n", s1
); printf("addr ptr - s2: 0x%08X\n\n", s2
);
//вывести не чётные числа
while(s1 != NULL){
s1 = s1->next;
}
//вывести чётные числа
while(s2 != NULL){
s2 = s2->next;
}
return 0;
}
//втолкнуть
int stack_push(struct node** st, int val){
struct node
* p
= (struct node
*)malloc(sizeof(struct node
)); if(p != NULL){
p->val = val;
p->next = *st;
*st = p;
}
return (p != NULL);
}
//вытолкнуть
void stack_pop(struct node** st){
struct node* t = *st;
if(t != NULL){
*st = (*st)->next;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4KCnN0cnVjdCBub2RlIHsKCWludCB2YWw7CglzdHJ1Y3Qgbm9kZSogbmV4dDsKfTsKCmludCAgc3RhY2tfcHVzaChzdHJ1Y3Qgbm9kZSoqIHN0LCBpbnQgdmFsKTsKdm9pZCBzdGFja19wb3Aoc3RydWN0IG5vZGUqKiBzdCk7CgovL9GA0LDQt9C00LXQu9C10L3QuNC1INGB0YLQtdC60LAg0L3QsCDQtNCy0LAg0YHRgtC10LrQsAp2b2lkIHN0YWNrX3NwbGl0KHN0cnVjdCBub2RlKiogczEsCgkJCQkgc3RydWN0IG5vZGUqKiBzMiwKCQkJCSBzdHJ1Y3Qgbm9kZSoqIHN0KXsKCXN0cnVjdCBub2RlKiBwID0gKnN0OwoKCWZvcigqczEgPSAqczIgPSBOVUxMOyBwICE9IE5VTEw7ICl7CgkJaWYocC0+dmFsICUgMil7CgkJCSpzMSA9IHA7CgkJCSBwICA9IHAtPm5leHQ7CgkJCSBzMSA9ICYoKnMxKS0+bmV4dDsKCQl9IGVsc2UgewoJCQkqczIgPSBwOwoJCQkgcCAgPSBwLT5uZXh0OwoJCQkgczIgPSAmKCpzMiktPm5leHQ7CgkJfQkKCX0KCSpzMSA9ICpzMiA9ICpzdCA9IE5VTEw7Cn0KCgppbnQgbWFpbih2b2lkKXsKCWludCBpOwoJc3RydWN0IG5vZGUqIHMxLCAqczIsICpzdCA9IE5VTEw7CgoJZm9yKGkgPSAwOyBpIDwgMzA7ICsraSkKCQlzdGFja19wdXNoKCZzdCwgaSk7CgoJc3RhY2tfc3BsaXQoJnMxLCAmczIsICZzdCk7CgoJLy/QsNC00YDQtdGB0LAKCXByaW50ZigiYWRkciBwdHIgLSBzMTogMHglMDhYXG4iLCBzMSk7CglwcmludGYoImFkZHIgcHRyIC0gczI6IDB4JTA4WFxuXG4iLCBzMik7CgoJLy/QstGL0LLQtdGB0YLQuCDQvdC1INGH0ZHRgtC90YvQtSDRh9C40YHQu9CwCgl3aGlsZShzMSAhPSBOVUxMKXsKCQlwcmludGYoIiVkICIsIHMxLT52YWwpOwoJCXMxID0gczEtPm5leHQ7Cgl9CglwdXRjaGFyKCdcbicpOwoKCS8v0LLRi9Cy0LXRgdGC0Lgg0YfRkdGC0L3Ri9C1INGH0LjRgdC70LAKCXdoaWxlKHMyICE9IE5VTEwpewoJCXByaW50ZigiJWQgIiwgczItPnZhbCk7CgkJczIgPSBzMi0+bmV4dDsKCX0KCXB1dGNoYXIoJ1xuJyk7CglyZXR1cm4gMDsKfQoKLy/QstGC0L7Qu9C60L3Rg9GC0YwKaW50IHN0YWNrX3B1c2goc3RydWN0IG5vZGUqKiBzdCwgaW50IHZhbCl7CglzdHJ1Y3Qgbm9kZSogcCA9IChzdHJ1Y3Qgbm9kZSopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwoJaWYocCAhPSBOVUxMKXsKCQlwLT52YWwgID0gdmFsOwoJCXAtPm5leHQgPSAqc3Q7CgkJKnN0ICAgICA9IHA7Cgl9CglyZXR1cm4gKHAgIT0gTlVMTCk7Cn0KCi8v0LLRi9GC0L7Qu9C60L3Rg9GC0YwKdm9pZCBzdGFja19wb3Aoc3RydWN0IG5vZGUqKiBzdCl7CglzdHJ1Y3Qgbm9kZSogdCA9ICpzdDsKCWlmKHQgIT0gTlVMTCl7CgkJKnN0ID0gKCpzdCktPm5leHQ7CgkJZnJlZSh0KTsKCX0KfQ==