我想删除出现在链表末尾的所有 zeors: 例子
5->6->0->5->0->0
应该变成
5->6->0->5
我已经试过了,但它不起作用:
ListNode * N=L.getHead(),*t;
while(N!=NULL){
if(N->getNext()->getData()==0){
t=N;
while(N!=NULL && N->getData()==0){
N=N->getNext();
}
if(N==NULL)
t->setNext(NULL);
}else
N=N->getNext();
}
注意事项:
- L是一个类的对象
- ListNode 是另一个类
getHead()
返回第一个节点地址- next in class 是私有(private)的,因此无法直接访问它。
最佳答案
这样做:
- 迭代整个列表,记下您发现值得保存的最后一个节点(使用保存列表头的结构进行初始化)。
- 删除所有以下节点。
这意味着两次迭代,但没有嵌套。 O(#oldlist + #removed)
您当前的方法行不通。
关于c++ - 从链表末尾移除 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23048571/