我想知道这段代码是否正确删除了第一个节点,还是我必须将列表的头部作为指针传递?
void List::deleteFirst()
{
temp = head;
head = head->next;
delete temp;
}
Run Code Online (Sandbox Code Playgroud)
这是班级 List
class List
{
private:
struct node
{
int data;
node * next;
};
node * head;
node * curr;
node * temp;
public:
//List();
//void AddNode(int addData);
//void DeleteNode(int delData);
void deleteFirst();
//void PrintList();
};
Run Code Online (Sandbox Code Playgroud)
只有在以下情况下才有效:
newhead始终指向有效节点(列表不为空).否则,您将导致未定义的行为.
但是你真的不应该存储temp为成员变量,而应该是局部变量.
这同样适用于该curr变量,确保它真正需要的一员.
此外,如果删除一个对象(例如您的节点),所有剩余的指针都将变为无效,因此请注意,之后不要尝试访问它,例如.通过curr*指针.
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |