//输入一个链表,输出该链表中倒数第K个结点
//思路:定义两个指针,第一个指针从链表的头指针开始遍历向前走K-1个,
//第二个指针不变;从第K步开始,第二个指针也开始从链表的头指针开始遍历,
//当第一个指针到达表尾时,第二个指针所指的结点就是倒数第K个结点。
#include<iostream>
using namespace std;
typedef struct node
{
int data;
struct node *next;
node(int x) : data(x), next(NULL) {}
};
node *findKthtoTail(node *head,int k)
{
node *p = head;
node *q = head;
for(int i = 0;i<k-1;i++)
{
p = p->next;
if(p == NULL)
return false;//当链表的长度小于K时,返回NULL
}
while(p->next !=NULL)
{
p = p->next;
q = q->next;
}
return q;
}
void main()
{
node *head = new node(-1);
node *node1 = new node(2);
node *node2 = new node(4);
node *node3 = new node(1);
node *node4 = new node(5);
node *node5 = new node(6);
node *node6 = new node(7);
head->next = node1;
node1->next = node2;
node2->next = node3;
node3->next = node4;
node4->next = node5;
node5->next = node6;
node6->next = NULL;
node *p = findKthtoTail(head,3);
cout<<p->data<<endl;
}
输出链表时倒数第K个结点
最新推荐文章于 2022-04-26 16:28:58 发布