#include <stdio.h>
#include <stdlib.h>
#define SIZEMAX 10
typedef struct node
{
int data;
struct node* next;
}node;
typedef struct stack
{
node *head;
int stksize;
}stack;
void initialize(stack *stk)
{
stk->head=NULL;
stk->stksize=0;
}
void push(stack *stk,int x)
{
if (stk->stksize==SIZEMAX)
{
return;
}
node
*temp
=(node
*)malloc(sizeof(node
)); temp->data=x;
temp->next=stk->head;
stk->head=temp;
stk->stksize++;
}
void print(stack *stk)
{
node *temp=stk->head;
while(temp!=NULL)
{
temp=temp->next;
}
}
void pop(stack *stk)
{
if (stk->stksize==0)
{
return;
}
node *temp=stk->head->next;
stk->head = temp;
stk->stksize--;
}
void partition(stack *stk)
{
stack negative,positive;
initialize(&negative);
initialize(&positive);
while (stk->stksize!=0)
{
if (stk->head->data<0)
{
push(&negative,stk->head->data);
pop(stk);
}
if (stk->head->data>=0)
{
push(&positive,stk->head->data);
pop(stk);
}
}
print(&negative);
print(&positive);
}
int main()
{
int i,x;
stack mystk;
initialize(&mystk);
for(i=0;i<5;i++)
{
push(&mystk,x);
}
print(&mystk);
partition(&mystk);
print(&mystk);
return(0);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCiNkZWZpbmUgU0laRU1BWCAxMAoKdHlwZWRlZiBzdHJ1Y3Qgbm9kZQogICB7CiAgIGludCBkYXRhOwogICBzdHJ1Y3Qgbm9kZSogbmV4dDsKICAgfW5vZGU7Cgp0eXBlZGVmIHN0cnVjdCBzdGFjawogICAgewogICAgbm9kZSAqaGVhZDsKICAgIGludCBzdGtzaXplOwogICAgfXN0YWNrOwoKdm9pZCBpbml0aWFsaXplKHN0YWNrICpzdGspCiAgIHsKICAgc3RrLT5oZWFkPU5VTEw7CiAgIHN0ay0+c3Rrc2l6ZT0wOwogICB9Cgp2b2lkIHB1c2goc3RhY2sgKnN0ayxpbnQgeCkKICAgewogICBpZiAoc3RrLT5zdGtzaXplPT1TSVpFTUFYKQogICAgICB7ICAKICAgICAgcHJpbnRmKCJzdGFjayBmdWxsIik7CiAgICAgIHJldHVybjsKICAgICAgfQoKICAgbm9kZSAqdGVtcD0obm9kZSopbWFsbG9jKHNpemVvZihub2RlKSk7CiAgIHRlbXAtPmRhdGE9eDsKICAgdGVtcC0+bmV4dD1zdGstPmhlYWQ7CiAgIHN0ay0+aGVhZD10ZW1wOwogICBzdGstPnN0a3NpemUrKzsKICAgfQoKdm9pZCBwcmludChzdGFjayAqc3RrKQogICB7CiAgIG5vZGUgKnRlbXA9c3RrLT5oZWFkOwogICB3aGlsZSh0ZW1wIT1OVUxMKQogICAgICB7CiAgICAgIHByaW50ZigifCVkfFxuIix0ZW1wLT5kYXRhKTsKICAgICAgdGVtcD10ZW1wLT5uZXh0OwogICAgICB9CiAgIH0KCnZvaWQgcG9wKHN0YWNrICpzdGspCiAgIHsKICAgaWYgKHN0ay0+c3Rrc2l6ZT09MCkKICAgICAgewogICAgICBwcmludGYoIm5vdGhpbmcgdG8gcG9wIik7CiAgICAgIHJldHVybjsKICAgICAgfQoKICAgbm9kZSAqdGVtcD1zdGstPmhlYWQtPm5leHQ7CiAgIGZyZWUoc3RrLT5oZWFkKTsKICAgc3RrLT5oZWFkID0gdGVtcDsKICAgc3RrLT5zdGtzaXplLS07CiAgIH0KCnZvaWQgcGFydGl0aW9uKHN0YWNrICpzdGspCiAgIHsKICAgc3RhY2sgbmVnYXRpdmUscG9zaXRpdmU7CgogICBpbml0aWFsaXplKCZuZWdhdGl2ZSk7CiAgIGluaXRpYWxpemUoJnBvc2l0aXZlKTsKICAgd2hpbGUgKHN0ay0+c3Rrc2l6ZSE9MCkKICAgICAgewogICAgICBpZiAoc3RrLT5oZWFkLT5kYXRhPDApCiAgICAgICAgIHsgICAKICAgICAgICAgcHVzaCgmbmVnYXRpdmUsc3RrLT5oZWFkLT5kYXRhKTsKICAgICAgICAgcG9wKHN0ayk7CiAgICAgICAgIH0KICAgICAgaWYgKHN0ay0+aGVhZC0+ZGF0YT49MCkKICAgICAgICAgewogICAgICAgICBwdXNoKCZwb3NpdGl2ZSxzdGstPmhlYWQtPmRhdGEpOwogICAgICAgICBwb3Aoc3RrKTsKICAgICAgICAgfQogICAgICB9CiAgICAgIAogICBwcmludGYoIlxuIik7CiAgIHByaW50KCZuZWdhdGl2ZSk7CiAgIAogICBwcmludGYoIlxuIik7CiAgIHByaW50KCZwb3NpdGl2ZSk7CiAgIH0KCmludCBtYWluKCkKICAgewogICBpbnQgaSx4OwogICBzdGFjayBteXN0azsKICAgaW5pdGlhbGl6ZSgmbXlzdGspOwoKICAgZm9yKGk9MDtpPDU7aSsrKQogICAgICB7CiAgICAgIHNjYW5mKCIlZCIsJngpOwogICAgICBwdXNoKCZteXN0ayx4KTsKICAgICAgfQoKICAgcHJpbnQoJm15c3RrKTsKICAgCiAgIHBhcnRpdGlvbigmbXlzdGspOwogICBwcmludGYoIlxuIik7CiAgIHByaW50KCZteXN0ayk7CgogICByZXR1cm4oMCk7CiAgIH0g