在链表中找第k倒数节点
发布时间
阅读量:
阅读量
//链表结点结构
typedef struct Node
{
int data;
struct Node* next;
}Node;
基于双指针策略,在链表中实现元素的删除操作通常采用分阶段的方法。首先,在链表中找到要删除节点的前驱节点,并计算其后继节点的位置;随后将目标节点的后继节点设置为前驱节点的前驱节点。具体来说,在初始状态下,“快游标”会从头节点出发并向前移动k个单位;随后,“慢游标”也开始移动,并最终抵达链表的倒数第k个节点位置。
int findElem(Node* head,int k)
{
int i=0;
Node* phead=head->next; //带头结点的单链表
Node* p=head;
while(phead!=NULL)
{
i++;
phead=phead->next;
if(i>=k) p=p->next; //让快指针先走
}
if(p==head) return 0;
else
{
printf("%d\n",p->data);
return 1;
}
全部评论 (0)
还没有任何评论哟~
