总结: 注意给出待删除结点i的值不能超过索引(0~n-1)
,不能低于索引0
.这里只需要区分是否删除头结点 和 非头结点.
node * delAt(node * h, int i)
{
// 请在此添加代码,补全函数delAt
/********** Begin *********/
if(i<0) return h; //
node* p=NULL,*q = h;
for(int j=0; j<i; j++){
if(q->next == NULL) return h; //索引超出范围
p = q;
q = q->next;
} //p结点滞后于q结点.
if(p){ //不是删除头节点
p->next = q->next;
delete q;
return h;
}
else{ //删除头节点
h = q->next;
delete q;
return h;
}
/********** End **********/
}