首页 > 其他 > 详细

从尾到头打印链表

时间:2020-05-02 23:50:42      阅读:84      评论:0      收藏:0      [点我收藏+]

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

/**
  * struct ListNode {
    * int val;
    * struct ListNode *next;
    * ListNode(int x) :
      * val(x), next(NULL) {
    * }
  * };
*/

方法一利用栈的先进后出
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
    vector<int> result;
    stack<int> arr;
    ListNode* p = head;
    while(p!=NULL)
    {
      arr.push(p->val);
      p = p->next;
    }
    int len = arr.size();
    for(int i=0;i<len;i++)
    {
      result.push_back(arr.top()); //push_back 在vector函数尾部加入一个数据
      arr.pop(); //pop()提取栈顶元素 相当于删除栈顶元素
    }
    return result;
    }
};

方法二 数组翻转

class Solution {

  public:

    vector<int>  printListFromTailToHead(ListNode* head) {

    vector<int> value;

    ListNode* p=NULL;

    p =head;

    while(p != NULL){

      value.push_back(p->val);

       p=p->next;

    }

    int temp = 0;

    int i=0,j=value.size()-1;

    while(i<j){

      temp = value[i];

      value[i] = value[j];

      i++;

      j--;

    }

    return value;

  }

}

方法三递归
class Solution {
public:
    vector<int> value;
    vector<int> printListFromTailToHead(ListNode* head) {
    ListNode *p=NULL;
    p = head;
    if(p!=NULL){
      if(p->next !=NULL){
        printListFromTailToHead(p->next);
      }
      value.push_back(p->val);
    }
    return value;    
};
记录: 还是要记住size();push_back()在给数组类尾部加入一个数据;利用递归的从后返回真的是太聪明了

从尾到头打印链表

原文:https://www.cnblogs.com/yl1995/p/12819930.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!