c語言單鏈表 單鏈表反轉(C語言)

2021-10-11 07:05:55 字數 1128 閱讀 5314

思路:

//單鏈表反轉函式//三指標法/*a,b,c三個指標分別指向三個位置,a指標和b指標用來反轉兩個結點,c指標指向下乙個節點用來標記和向前推進。*/list *reverse_threepoints1(list *head)return a;}//三指標法優化/*說是優化,其實是一樣的思路,只不過,這裡的head作為b,a指向空。a,b,head三個指標分別指向三個位置,a指標和head指標用來反轉兩個結點,b指標指向下乙個節點用來標記和向前推進。*/list *reverse_threepoints2(list *head)return a;}
方法二:回溯法(遞迴)

思路

p->next->next = p;p->next = null;
指標向後遍歷至最後兩個結點,將最後兩個反轉

然後向前回溯,此時,由於後面的兩個結點已經反轉,所以,當前結點和後乙個結點可以看成是最後兩個結點,直接進行反轉操作即可

//遞迴法list *reverse_recursive(list *head)elsereturn head;}
源**

#include #include struct list;list *init_list(list *head)return head->next;}void print_list(list *head)printf("");}//單鏈表反轉函式//三指標法/*a,b,c三個指標分別指向三個位置,a指標和b指標用來反轉兩個結點,c指標指向下乙個節點用來標記和向前推進。*/list *reverse_threepoints1(list *head)return a;}//三指標法優化/*說是優化,其實是一樣的思路,只不過,這裡的head作為b,a指向空。a,b,head三個指標分別指向三個位置,a指標和head指標用來反轉兩個結點,b指標指向下乙個節點用來標記和向前推進。*/list *reverse_threepoints2(list *head)return a;}//遞迴法list *reverse_recursive(list *head)elsereturn head;}int main()

單鏈表反轉 C語言

題目 時間複雜度為o n 空間複雜度為o 1 1 6 include include define elemtype int int num 0 typedef struct node node typedef node linklist void initlist linklist l void ...

單鏈表反轉(C語言)

思路 思路 遞迴法 list reverse recursive list head else return head include include struct list list init list list head return head next void print list list...

C語言單鏈表

include include include define error 0 typedef struct lnode lnode,linklist linklist initlist linklist l node next null l node return l int listlength ...