华为oj 输出单向链表中倒数第k个结点

来源:互联网 发布:西安西科软件 编辑:程序博客网 时间:2024/05/17 05:53

终于到这道题了,这是俺们那年考研数据结构最后一道题!

思路:设置相距为k的两个指针,当后一个指针指向NULL 时,前面的指针就指向了倒数第K个,程序如下:

#include <iostream>using namespace std;struct ListNode{int       m_nKey;ListNode* m_pNext;};int main(){int count, k, num;ListNode* Head = new ListNode();ListNode* p = Head;ListNode* q = NULL;cin >> count;//创建链表for (int i = 0; i<count; i++){cin >> num;q = new ListNode();q->m_nKey = num;p->m_pNext = q;p = p->m_pNext;}cin >> k;p = q = Head->m_pNext;for (int i = 0; i < k; i++){q = q->m_pNext;}while (q->m_pNext != NULL){p = p->m_pNext;q = q->m_pNext;}cout << p->m_nKey<<endl;return 0;}
结论:还有找到中间节点的思路,也设置两个指针,一个指针每次++,另一个指针进行两次++!!!

0 0
原创粉丝点击