删除p指向的结点:
思路:
把p的下个结点内容拷贝到p,然后删除p的下个结点;
/*
考虑的情况:
1. p是空
2.p 指向单链表最后一个结点;
3.p 指向单链表的头结点
*/
/*
input :
P,将要删除结点的指针
output :
1(成功),0(失败),-1(失败,但是把结点删除了)
功能:
删除链表中的结点
*/
int deleteTheNodeInList(LinkNode *p)
{
int returnState=1;
LinkNode *delNodeP;//指向实际删除结点的指针
if(NULL==p)
return 0;
else if(NULL==p->next)
{
delNodeP=p;
returnState=-1;//当是尾结点时候直接删除,但是返回状态-1;当然也可不删除,把他内容全部清0
}
else
{
delNodeP=p->next;
returnState=2;
memcpy(p,delNodeP,sizeof(*p));
}
delete delNodeP;
return returnState;
}