关于链表的插入算法问题
这个对链表进行插入的经典算法,看不懂啊,有大神指教下吗bool Insert(PNODE phead, int pos, int val)
{
int i=0;
PNODE p = phead;
while(NULL!= p&& i<pos-1)
{
p = p->pnext;
++i;
}
if(i>pos-1 || NULL==p)
return false; //通过这上面两句就可以让P指向要插入节点的前一个节点,是咋做到的
PNODE pnew = (PNODE)malloc(sizeof(NODE));
if(NULL == pnew )
{
printf("动态分配内存失败,程序终止!");
exit(-1);
}
pnew->data = val;
PNODE q = p->pnext;
p->pnext = pnew;
pnew->pnext = q; //这里为什么是q啊
return true;
}