C++解法:剑指offer,输入一个链表,输出该链表中倒数第k个结点。

题目描述

输入一个链表,输出该链表中倒数第k个结点。

提交代码:

class Solution {
public:
	ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
		if (pListHead==NULL|| k<0)  #第一步判断接收数据是否有误
		{
			return NULL;
		}
		ListNode* pre = pListHead;
		ListNode* last = pListHead;
		int i = 0;
		while (pre!=NULL)
		{
			
			if (inext;
				i++;			
			}
			else  #一起向后移动
			{
				pre = pre->next;
				last = last->next;
			}
		
		}
		if (i

测试代码:

int main()
{
	Solution *s = new Solution();
	//vector v = { 2,4,6,1,3,5,7 };
	ListNode *l1 = new ListNode(1);
	ListNode *l2 = new ListNode(2);
	ListNode *l3 = new ListNode(3);
	ListNode *l4 = new ListNode(4);
	ListNode *l5 = new ListNode(5);
	ListNode *l6 = new ListNode(6);
	ListNode *l7 = new ListNode(7);
	l1->next = l2;
	l2->next = l3; l3->next = l4; l4->next = l5;
	l5->next = l6; l6->next = l7;

	ListNode* out_list =s->FindKthToTail(l1,3);

	system("pause");
	return 0;
}

结果: 

C++解法:剑指offer,输入一个链表,输出该链表中倒数第k个结点。_第1张图片

你可能感兴趣的:(C++刷题)