思路
定义两个指向链表首结点的指针变量,第一个指针变量向后移动k个位置后,第二个指针变量也开始跟着一起向后移动,直到第一个指针变量指向尾结点为止,第二个指针变量指向的位置结点就是倒数第k个结点。
实现步骤及参考代码(C语言)
int LList_FindLK(LList_t *Head, DataType_t data, int k){
// 1.定义两个指向首结点的指针变量
LList_t *Temp1 = Head->next;
LList_t *Temp2 = Head->next;
// 2.定义一个计数器,判定什么时候到第k个位置
int count = 0;
// 3.Temp1从首结点开始遍历
while(Temp1->next != NULL)
{
Temp1 = Temp1->next;
// 4.每移动一次,计数器+1
count++;
// 5.如果计数器的值小于k,说明没有找到第k个位置,返回0
if(count next;
}
}
// 7.说明Temp1已经指向尾结点,此时Temp2指向的位置即为倒数第k个结点,输出Temp2的data值并返回1
printf("单向链表中倒数第k个位置结点的data值为:%d",Temp2->data);
return 1;
}
机房租用,北京机房托管,大带宽租用,IDC机房服务器主机租用托管-价格及服务咨询 www.e1idc.net