單鏈表逆轉

2022-03-29 23:44:33 字數 1949 閱讀 1971

單鏈表逆轉演算法草圖如下:

方法1:借助輔助空間

建立臨時的新鍊錶,將新節點指向其前驅結點實現逆**

#include #include #include//#include "alloc.h"

typedef struct /* 使用typedef定義型別 */

node;

node * input()

p1->next=null;

return h;

}void display(node *p)

}node * reverse(node * p)

return p1; /*原鍊錶的最後乙個結點是新鍊錶的頭結點 */

}int main(void)

方法2:原地逆轉頭尾互換,指標指向反轉

#include #include #include struct node

;struct node * input()

p1->next=null;

return h;

}void display(struct node *p)

}struct node * reverse(struct node *h)

return h;

}int main(void)

list_ptr invertlist(list_ptr  head) //

原地逆轉單鏈表head

return

head;

}

思考:單鏈表的逆轉如上都是採用迴圈遍歷的方法,那應該也可採用遞迴遍歷的方法吧?  

單鏈表逆轉演算法草圖如下:

方法1:借助輔助空間

建立臨時的新鍊錶,將新節點指向其前驅結點實現逆**

#include #include #include//#include "alloc.h"

typedef struct /* 使用typedef定義型別 */

node;

node * input()

p1->next=null;

return h;

}void display(node *p)

}node * reverse(node * p)

return p1; /*原鍊錶的最後乙個結點是新鍊錶的頭結點 */

}int main(void)

方法2:原地逆轉頭尾互換,指標指向反轉

#include #include #include struct node

;struct node * input()

p1->next=null;

return h;

}void display(struct node *p)

}struct node * reverse(struct node *h)

return h;

}int main(void)

list_ptr invertlist(list_ptr  head) //

原地逆轉單鏈表head

return

head;

}

思考:單鏈表的逆轉如上都是採用迴圈遍歷的方法,那應該也可採用遞迴遍歷的方法吧?

逆轉單鏈表

逆轉單鏈表 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...