關於點鍊錶的逆轉,主要在於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...