输出链表时倒数第K个结点

来源:互联网 发布:人工智能未来的发展 编辑:程序博客网 时间:2024/06/07 01:53
//输入一个链表,输出该链表中倒数第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;}

0 0
原创粉丝点击