文章
15
粉丝
0
获赞
6
访问
894
(1) 使用双指针,令两个指针相隔k - 1个结点,接着两个指针同时后移,在后的指针指向NULL时,在前的指针就会指向倒数第k个结点。
(2) 设置两个指针ptr1和ptr2指向头结点,先使用一个while循环令ptr2先向后移动k步,同时k--,循环中断条件为k == 0 || ptr2 == NULL,若循环结束后k不为0,那么说明查找失败,返回0;否则在ptr2后移完成后,再让两个指针同时后移,直至ptr2 == NULL时停止,此时ptr1指向的结点就是倒数第k个结点,输出ptr1的数据域,再返回1。
(3)
使用C语言实现的代码如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode {
int data; // 以整型作为data域类型
struct LNode *next;
} LNode, *LinkList;
// 算法主体函数
int solution(LinkList list, int k) {
LNode *ptr1 = list, *ptr2 = list;
while (k != 0 || ptr2 != NULL) {
ptr2 = ptr2 -> next;
k--;
}
if (k != 0) return false; // 循环结束后k不为0,那么说明查找失败
while (ptr2 != NULL) {
ptr1 = ptr1 -> next;
 ...
登录后发布评论
暂无评论,来抢沙发