new ,delete 疑问

effective_person effective_person 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

//为什么使用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--;
}
...全文
评论 7
收藏 已收藏
分享
返回顶部
effective_person
C++ 语言 65,214 成员 250,514 内容