1. 程式人生 > >單鏈表 演算法(刪除中間節點)

單鏈表 演算法(刪除中間節點)

單鏈表的演算法:

假設有一個沒有頭指標的單鏈表,一個指標指向此單鏈表中間的一個節點

(不是第一個,也不是最後一個),如何將該節點從單鏈表中刪除。 

void DeleteRandomNode(LinkList& pCurrent)
{
 //Cant Delete the Last One.
 assert (pCurrent!=NULL);
 LinkList pNext=pCurrent->Next;
 if(pNext!=NULL)
 {
  pCurrent->Next=pNext->Next;
  pCurrent->data=pNext->data;
  delete pNext;
 }
}

int main()
{
 LinkList head=(LinkList)malloc(sizeof(Node));
 head->Next=NULL;
 head=InitLinkList(9,head);
 TraverseLinkList(head);
 DeleteRandomNode(head->Next->Next);
 TraverseLinkList(head);
 return 0;
}