void IntList::push_front(int value){
IntNode *holder = new IntNode(value);
holder -> next = head;
head = holder;
if(head == 0){
tail = head;
}
tail = holder;
}
标题
#ifndef INTLIST_H
#define INTLIST_H
struct IntNode{
int data;
IntNode *next;
IntNode(int data) : data(data), next(0) {}
};
class IntList{
private:
IntNode *head;
IntNode *tail;
public:
void push_front(int value);
};
#endif
如何让尾巴指向最后一个尾节点?我有if语句,如果列表为空则将其设置为0。
答案 0 :(得分:0)
head = holder;
if(head == 0){
tail = head;
}
上面的步骤顺序错误:你正在设置head to holder(永远不会为0)因为如果内存分配失败你会得到一个异常,如果它有效,你会得到指向分配节点),然后测试head是否仍然等于0。
你可以改变他们的订单,但恕我直言,直接测试尾巴更清洁:
head = holder;
if (tail == nullptr)
tail = head;
在pre-C ++ 11编译器上,您可能没有nullptr
- 只需使用NULL或0或更改为if (!tail)
。