單鏈表的逆轉

2022-07-18 06:42:15 字數 1360 閱讀 9640

關於點鍊錶的逆轉,主要在於reverse函式中

在乙個博主那看懂他他關於實現逆轉的詳細解釋:

1).開始的時候,建立乙個指標域空的指標為prev, 指向內容為空(null),當list reverse( list l );這個函式接收的鍊錶內容為a,b,c,d(為了簡便我用字母,裡面定義是整型,但思路一樣適用),如下圖:

第一步,用 l->next  指向 prev,  切斷 l->next 與b直接的聯絡,這樣一來就變成了下面的樣子。

(2).有了第一步,就可以想到第二部怎麼做了,但還需要注意一些細節,我們需要修改prev的指標指向的位置,還有指標l指向的位置,為的是下一步將 b 也連線到 a 指標的後面,如下圖:

此時將l重新指向原來的鍊錶的第乙個位置,但原來的鍊錶少了乙個a,此時就指向了b,讓temp指向下c。用**實現就是:

因此reverse函式的**就是

void reverse(linklist &l)

l =p;

}

但可能由於鍊錶賦值是用的方法不同 ,所以最後我的鍊錶逆轉後有問題,全部**:

void tail(linklist &l)

end->next =null;

}void

print(linklist l)

}void reverse(linklist &l) //逆轉之後的鍊錶沒有帶頭結點

逆轉k個數的方法

linklist reverse(linklist head,int k){

int cnt = 1;    linklist new,old,tmp;

new=head->next;   old = new->next;

while(cnttmp= old ->next;    new=old;  old = tmp;   cnt++;

head->next->next = old;

return  new;

逆轉單鏈表

逆轉單鏈表 struct node reverse llist node head 此時temp表示以前的尾結點,p表示temp結點的前一結點 head temp 逆轉尾結點為頭結點 head next p 頭結點指標域指向p return head 逆轉迴圈鍊錶 struct node rever...

單鏈表逆轉

單鏈表逆轉 單鏈表逆轉,將單鏈表中各結點的next域改為指向其前驅結點。原先第乙個結點的next域為空,head改為指向原先的最後乙個結點。逆轉剛才如下圖所示 鍊錶類singlylist public class singlylist 構造單鏈表,由values陣列提供元素 public singl...

單鏈表逆轉

資料結構與演算法題目集 中文 list reverse list l 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型別 l是給定單鏈表,函式reverse要返回被逆轉後的鍊錶。i...