使用快慢指针。快指针比慢指针提前n个单元。当快指针到达单链表尾部时,慢指针指向待删除节点的前节点。
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}LNode, *LinkList;
LinkList* H;
LinkList* node(LinkList* H, int N)
{
LinkList *pNode, *lNode;
pNode = H;
lNode = H;
while(pNode->next != NULL)
{
if(N > 0)
{
N--;
}
if(N == 0)
{
lNode = lNode->next;
}
pNode = pNode->next;
}
return lNode;
}