單鏈表:從頭到尾打印鏈表

解題思路:

第一種方法:逆置單鏈表,然後輸出;

第二種方法:利用棧的特性(先進後出),從頭部入棧,然後出棧即可;

下面着重實現第二種方法。

代碼實現

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution
{
public:
    vector<int> printListFromTailToHead(ListNode* head)
    {
        stack<ListNode*> nodes;
        ListNode* p = head;
       
        while(p != NULL)
        {
            nodes.push(p);
            p = p->next;
        }
       
        vector<int> result;
        while(!nodes.empty())
        {
            p = nodes.top();
            result.push_back(p->val);
            nodes.pop();
        }
        return result;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章