问题描述:
删除链表的倒数第K个结点
实现思路
设置两个指向头结点的指针,让其中一个指针先走K步,然后让另一个指针同时一起走,找到倒数第K个结点,将第K个结点的值与倒数第K个节点的下一个节点的值相互替换,删除倒数第K个结点的下一个结点;
代码实现:
void DeleteKNode(pSListNode* pHead, int k)
{
pSListNode cur = *pHead;
pSListNode tmp = *pHead;
pSListNode str = NULL;
while (k--)
{
cur = cur->_next;
}
while (cur)
{
cur = cur->_next;
tmp = tmp->_next;
}
str = tmp->_next;
tmp->_data = str->_data;
tmp->_next = str->_next;
free(str);
}