这是我的代码:
void removeOddValues(Stack *s)
{
Stack *odd = (Stack*)malloc(sizeof(Stack));
odd->ll.head = NULL;
odd->ll.size = 0;
while(s->ll.head->item % 2 == 0){
push(odd, s->ll.head->item);
}
pop(s);
while(!isEmptyStack(odd)){
push(s, odd->ll.head->item);
pop(odd);
}
free(odd);
}
如何删除堆栈中间的元素?
最佳答案
栈只能从末尾访问,所以从栈中间移除项的算法需要第二个栈来临时存储数据:
- 从 Stack One 中弹出一个项目
- 如果您想保留该元素,请将其插入第二堆
- 重复第 1 步和第 2 步,直到第一个堆栈为空
- 从堆栈二中弹出一个项目并将其插入堆栈一
- 重复第 4 步,直到堆栈二为空
关于c - 如何移除不在栈顶的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47035551/