题目:输入一个链表的头结点,从尾到头反过来打印出每个节点的值。
struct ListNode{
int m_nKey;
ListNode* m_pNext;
};
链表不能反向,从前遍历,从后打印,符合后进先出,用栈。
#include <iostream>
#include <stack>
using namespace std;
struct ListNode {
int m_nKey;
ListNode *m_pNext;
};
void printList(ListNode *head) {
if (head == NULL)
return;
stack<ListNode *> ls;
while (head != NULL) {
ls.push(head);
head = head->m_pNext;
}
while (!ls.empty()) {
cout << ls.top()->m_nKey << " ";
ls.pop();
}
cout << endl;
}
ListNode *CreateList() {
ListNode *head = new ListNode;
if (cin >> head->m_nKey)
head->m_pNext = CreateList();
else
return NULL;
return head;
}
int main(int argc, char const *argv[]) {
ListNode *head = CreateList();
printList(head);
return 0;
}