91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

劍指offer之面試題16 :反轉鏈表

發布時間:2020-10-26 02:04:16 來源:網絡 閱讀:852 作者:momo462 欄目:編程語言

題目:輸入一個鏈表,反轉鏈表后,輸出鏈表的所有元素。

思路一:利用棧的后進先出

代碼:

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) 
    {
        //利用棧的后進先出的特點,最后進的最先出
		stack<int> s1;
        ListNode *p=pHead;
        //將鏈表中的每個元素的值進行壓棧
        while(p!=NULL)
        {
            s1.push(p->val);
            p=p->next;
        }
        //出棧,并且將棧頂元素放入鏈表中
        p=pHead;
        while(!s1.empty())
        {
            p->val=s1.top();
            s1.pop();
            p=p->next;
        }
        return pHead;
    }
};

思路二:進行摘結點,然后頭插

代碼:

class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) 
    {
        if(pHead==NULL)
        {
            return NULL;
        }
	ListNode *newHead=NULL;
        ListNode *cur=pHead;
        ListNode *tmp=NULL;
        while(cur!=NULL)
        {
            tmp=cur;
            //關鍵點:一定要讓cur先往后走,再進行插入操作
            //不然會讓原鏈表找不到后面的結點,結果就會變成只有一個結點
            cur=cur->next;
            tmp->next=newHead;
            newHead=tmp;
        }
        return newHead;
    }
};

思路三:利用遞歸,找到最后一個結點作為函數的返回值,然后在改變該鏈表的每一個當前pHead的位置

代碼:

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) 
    {
		//終止條件
        if(pHead==NULL||pHead->next==NULL)
        {
            return pHead;
        }
        //newHead得到對應的返回值,尾節點
        ListNode *newHead=ReverseList(pHead->next);
        //然后將當先棧幀中的pHead的next進行更改
        //比如說1->2->3->4->NULL
        //newHead->4
        //pHead->3
        //4->3->null
        //此時指向3的還有1->2->3->null
		pHead->next->next=pHead;
        pHead->next=NULL;
        return newHead;
        
    }
};


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

千阳县| 扎兰屯市| 兴城市| 桃江县| 白朗县| 克山县| 长白| 都安| 辉县市| 凉山| 乐山市| 琼结县| 东阳市| 仁寿县| 铜梁县| 景东| 武乡县| 上杭县| 永丰县| 昂仁县| 泾源县| 长岛县| 吴旗县| 合肥市| 偏关县| 宁远县| 石首市| 邵武市| 溧阳市| 双城市| 息烽县| 安庆市| 呼伦贝尔市| 五河县| 白银市| 凉山| 宜黄县| 措美县| 漳州市| 攀枝花市| 东辽县|