劍指Offer(十五) 反轉鍊錶

2022-08-20 14:21:13 字數 1231 閱讀 2505

本系列文章為《劍指offer》刷題筆記。

刷題平台:牛客網

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。

這個很簡單,我們使用三個指標,分別指向當前遍歷到的結點、它的前乙個結點以及後乙個結點。

#include using

namespace

std;

typedef

struct

node node, *list;

node *reverselist(list head)

//進行鍊錶的反轉,當前結點的 next 指標指向前乙個結點,實現鍊錶方向的反轉,此時發生了斷鏈

pnow->next =pre;

//勿忘斷鏈的情形,需要使用 pre 指標儲存狀態,pre 等價於是後移乙個結點

pre =pnow;

//pnow 後移乙個結點

pnow =pnext;

}return

tail;

}

python

# -*- coding:utf-8 -*-

# class listnode:

#     def __init__(self, x):

#         self.val = x

#         self.next = none

classsolution:

# 返回listnode

defreverselist(self,phead):

# write code here

ifnotphead ornotphead.next:

returnphead

last=none

whilephead:

tmp=phead.next

phead.next=last

last=phead

phead=tmp

returnlast

劍指offer(十五) 反轉鍊錶

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。題解 簡單一點的思路就是將該鍊錶的值用陣列或棧儲存下來,然後用一條新鍊錶儲存下來即可實現反轉。但是這種方法會消耗額外的空間,不是好方法。一解 public static listnode reverselist listnode head sta...

劍指offer(十五)之 反轉鍊錶

單鏈表的反轉有兩種方式 這裡講的不錯 核心思想就是 把pcur節點插入到dummy和它的下乙個節點之間 注意是dummy.next 不是prev 然後pcur向後推。分四步實現 第一步 為pcur的離開做準備,不然後面就丟了 prev.next pcur.next 可以看到,prev一直都是原來的h...

劍指offer 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。方法1 將單鏈表儲存為陣列,然後按照陣列的索引逆序進行反轉。方法2 使用三個指標遍歷單鏈表,逐個鏈結點進行反轉。方法3 從第2個節點到第n個節點,依次逐節點插入到第1個節點 head節點 之後,最後將第乙個節點挪到新錶的表尾。public class l...