题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
#include <iostream>
#include <malloc.h>
#include <stack>
using namespace std;
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
int main() {
int num;
while (cin >> num) { // 注意 while 处理多个 case
ListNode *lis = (ListNode*)malloc(sizeof(ListNode));
ListNode *pt = lis;
pt->m_nKey=-1;
pt->m_pNext=nullptr;
for(int i=0;i<num;++i){
int in;
cin>>in;
ListNode *temp = (ListNode*)malloc(sizeof(ListNode));
temp->m_nKey = in;
temp->m_pNext=nullptr;
pt->m_pNext=temp;
pt=pt->m_pNext;
}
pt=lis;
stack<int> sk;
while(true){
ListNode* tp = pt;
pt=pt->m_pNext;
free(tp);
if(pt!=nullptr){sk.push(pt->m_nKey);}
else{break;}
}
int del;
cin>>del;
for(int i=0;i<del-1;++i){
sk.pop();
}
cout<<sk.top()<<endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")

小天才公司福利 1237人发布