while (NULL!=p && i<pos-1) //插入
{
p = p->pNext;
++i;
}
if (NULL==p || i>pos-1)
{
return false;
}
while (NULL!=p->pNext && i<pos-1) //删除
{
p = p->pNext;
++i;
}
if (NULL==p->pNext || i>pos-1)
{
return false;
}
pos为位置,
1.不正常运行:
(1)位置为(pos<1),依靠(i>pos-1)来报错,
(2)比链表结点个数多(插入需要多2)的用NULL!=p/(p->pNext)终止循环,用NULL== p/(p->pNext)报错,即return false
***产生 插入:NULL!=p NULL == p 和 删除:NULL!=p->pNext NULL==p->pNext的区别:
(1)插入尾结点后面即尾结点-->pNext
(2)不能删除尾结点后面即尾结点->pNext所指结点(不存在)
所以 插入 可以比 删除 多1个处理位置
2.正常运行:
(1)位置pos=1的时候,跳过while和if
(2)p最后为插入或删除位置的前一个结点 依靠 i<pos-1 控制
总结,体会到头结点的好处。