栈内元素为整形,实现从栈顶到栈底大到小的排序。要求:最多只许申请一个栈,可以申请新的变量,但是不能申请新的数据结构。
int sort_data_of_stack(lstack * stack)
{
lstack * help=NULL;
datatype stackdata,cure;
help=(pointer)malloc(sizeof(*help));
if(!help)
return -1;
help->top=NULL;
if(help->top==NULL)
{
stackdata=pop_stack(stack);
push_stack(help,stackdata);
}
while(stack->top!=NULL)
{
cure=pop_stack(stack);
while((help->top!=NULL)&&cure>help->top->data)
{
stackdata=pop_stack(help);
push_stack(stack,stackdata);
}
push_stack(help,cure);
}
while(help->top!=NULL)
{
stackdata=pop_stack(help);
push_stack(stack,stackdata);
}
return 0;
}