更改链接列表

时间:2012-06-02 20:02:26

标签: c++

您将获得一个单一链接列表a->b->c->d->1->2->3->4->e->f->g->h->5->6->7->8。您必须将此列表更改为a->1->b->2->c->3->d->4->e->5->f->6->g->7->h->8

我的方法使用额外的列表,我们从列表中删除数字并单独存储它们。然后将列表合并在一起。有人可以建议更好的技术吗?

2 个答案:

答案 0 :(得分:8)

我会有两个迭代器。让一个(迭代器A)遍历列表,当你点击一个数字时停止,让另一个(迭代器B)停留在列表的开头。当你点击一个数字时,在迭代器B的节点后面的迭代器A处插入节点,然后向上移动迭代器B.通过这种方式,您无需单独制作列表。

编辑:在B处插入物品后移除物品(感谢Tudor捕捉)。

答案 1 :(得分:1)

取两个指针并增加第二个指针,直到得到一个数字,一旦你得到一个数字,从这里删除节点并在第一个指针后插入。

由于是一个面试问题,面试官可能正在研究如何处理所有角落情况,例如list is null,只有两个节点(1-char& 1-int),字符节点数和整数节点不同在块等的数量