亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

劍指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

长宁区| 璧山县| 泰州市| 子洲县| 思南县| 赞皇县| 九寨沟县| 通许县| 闸北区| 桑植县| 扶风县| 乌兰县| 西贡区| 太保市| 高阳县| 喀喇沁旗| 衡南县| 铅山县| 永吉县| 基隆市| 新干县| 黄浦区| 镇雄县| 达州市| 鄂托克旗| 客服| 东安县| 忻州市| 万盛区| 临西县| 九江市| 三亚市| 宁河县| 衡南县| 富蕴县| 无为县| 杨浦区| 汉源县| 安义县| 衡东县| 寿光市|