new ,delete 疑问
//为什么使用delete 出现错误?
template <typename T>
void Linklist<T>::Insert(int i,T x)
{
if(i<0||i>length+1) //抛出异常
throw Overflow();
if(length==0)//由于第一个节点不同于其它节点的插入
{//可以直接把 pt节点连接在first(头接点)的后面
Node<T> *pt=new Node<T>;
pt->data=x;
first->next=pt;
pt->next=NULL;//最后pt要指向空
// delete pt; //为什么收回空间会出现错误?
}
else
{
Node<T> *p=first;
for(int j=0;j<i-1&&p;j++)
p=p->next;//找到要插入的位置
Node<T> * newdata=new Node<T>;
newdata->data=x;//一般插入节点
newdata->next=p->next;
p->next=newdata;
// delete newdata;//出现错误
}
length++;
}
template <typename T>
void Linklist<T>::Delete(int i)
{
if(i<0||i>length)//抛出异常
throw Overflow();
else
{
Node<T> *p=first->next;
for(int j=0;j<i-2;j++)
p=p->next;//找到要删除节点位置之前的节点
Node<T> *q=new Node<T>;
q=p->next;//删除节点
p->next=q->next;
delete q;//为什么这没有出现错误呢?
}
length--;
}
...全文


