您的位置:首页 > 职场人生

剑指offer面试题5:从尾到头打印链表

2016-09-06 21:11 633 查看
题目:输入一个链表的头结点,从尾到头反过来打印出每个节点的值。

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: