数据结构必须像堆栈一样。只有一个区别。我想从任何索引不仅持续弹出。当我弹出元素n
时,索引为N > n
的元素必须交换为N-1
。有什么想法吗?
P.S。
n
推入堆栈的最后一个索引。 stack[n]
是一个坏主意。
答案 0 :(得分:4)
我认为您正在寻找链接列表。
答案 1 :(得分:1)
链接列表(std::list
)将允许您从中间删除O(1)
复杂度的元素,并自动“拉”后面的元素。您可以使用push_front
使用类似堆栈的链接列表。但是,您需要注意访问链接列表中的元素是O(n)
,因为您需要从列表的头部开始,然后沿着链接从一个元素走到下一个元素,直到您到达元素n
(因此没有O(1)
索引)
基本上你需要
advance
它定位n
erase
迭代器当前指向的元素可以找到一些示例代码here。
答案 2 :(得分:0)
您需要实现链接列表,但与数组不同,链接列表中的顺序由每个对象中的指针确定。因此,您无法使用索引来访问元素。