删除一个无头单链表的非尾节点(不能遍历单链表)

题目:

     删除一个无头单链表的非尾节点(不能遍历单链表)

解题思路:首先这个单链表是无头的,所以不能从头开始,也不能遍历单链表。只是给定一个节点,要删除一个节点,首先需要找到上一个节点,但是因为是无头的,所以我们无法知道给定节点的上一个节点,所以就不能去删除给定的节点,但是我们可以去删除给定节点的后一个节点。

如下图:为替换法删除

代码实现:

void DelNode(SListNode *pPos)
{
	assert(pPos && pPos->pNext );
	//替换法进行删除
	SListNode *next = pPos->pNext;
	pPos->data = next->data;
	pPos->pNext = next->pNext;
	free(next);
}

猜你喜欢

转载自blog.csdn.net/qq_41889292/article/details/80725797
今日推荐