{
struct ListNode{
int val;
ListNode *next;
ListNode(int a) :val(a),next(nullptr){};
ListNode(ListNode *p) :val(p->val),next(p){};
ListNode() :next(nullptr){};
};
ListNode head(-1),first=new ListNode(1),sec=new ListNode(1),
third=new ListNode(3),frt=new ListNode(4),
secd=new ListNode(5),thd=new ListNode(6);
head.next=&first;first.next=&sec;
sec.next=&third;third.next=&frt;
frt.next=&secd;secd.next=&thd;
ListNode *pre=new ListNode(&head);
pre=pre->next;
delete pre;
}
以上是部分代码,测试发现如果不改变pre的值,也就是没有pre=pre->next 这句话,是可以直接删除pre指针的,但是改变后就不能删除了,这是为什么?pre->next指向的节点也是有new 分配的,为什么不能用delete删除呢? |