單鏈表中通過某一結點指針刪除該結點

刪除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;
}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章