輸出單向連結串列中倒數第k個結點/華為機試(C/C++)
阿新 • • 發佈:2018-12-09
題目描述
輸入一個單向連結串列,輸出該連結串列中倒數第k個結點,連結串列的倒數第1個結點為連結串列的尾指標。
連結串列結點定義如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
詳細描述:
介面說明
原型:
ListNode* FindKthToTail(ListNode* pListHead, unsignedint k);
輸入引數:
ListNode* pListHead 單向連結串列
unsigned int k 倒數第k個結點
輸出引數(指標指向的記憶體區域保證有效):
無
返回值:
正常返回倒數第k個結點指標,異常返回空指標
輸入描述:
輸入說明 1 輸入連結串列結點個數 2 輸入連結串列的值 3 輸入k的值
輸出描述:
輸出一個整數
示例1
輸入
8 1 2 3 4 5 6 7 8 4
輸出
5
程式碼:
//第四十九題 輸出單向連結串列中倒數第k個結點 #include<iostream> using namespace std; struct ListNode { int val; ListNode* next; }; int main() { int n; while (cin >> n) { ListNode *p, *q, *head = new ListNode; int num; cin >> num; head->val = num; head->next = NULL; q = head; for (int i = 0; i<n - 1; i++) { int x; cin >> x ; p = new ListNode; p->val = x; p->next = NULL; q->next = p; q = p; } int denum; cin >> denum; q = head; int i = 0; if (denum < 1) cout << 0; else while (q) { int iNum = n - i; if (iNum == denum) { cout << q->val; p = q; q = q->next; delete p; } else { p = q; q = q->next; delete p; } i++; } delete q; cout << endl; } return 0; }