最近在leetcode oj上刷題,將一些演算法題的解法記錄下來,也期待一些新的更好的方法。
題目是這樣滴:
206. reverse linked list
reverse a singly linked list.
hint:
a linked list can be reversed either iteratively or recursively. could you implement both?
下面是我的解答:
思路:首先判斷鍊錶是否為空或者只有乙個節點,如是直接返回該鍊錶;否則,建立乙個頭結點,讓它指向鍊錶的第乙個節點,從第二個節點開始,依次將其插入到頭結點後面,知道最後乙個節點。
**:
/**
* definition for singly-linked list.
* struct listnode ;
*/struct listnode* reverselist(struct listnode* head)
return phead->next;
}
單鏈表逆置
單鏈表逆置 include include define item num 10 typedef struct tagnode node node linklist create void linklist destroy node head void linklist print node hea...
單鏈表逆置
name 單鏈表逆置 author 巧若拙 date 22 11 14 16 13 description 分別用遞迴和非遞迴兩種方式實現單鏈表 不含頭結點 的逆置 include include include typedef char elemtype typedef int status 函式...
單鏈表逆置
明確題目要求不能使用額外的節點儲存空間,額外的節點儲存空間做中轉。在不使用額外儲存節點的情況下使乙個單鏈表的所有節點逆序?可以通過迭代迴圈的思想來處理 使用頭指標依次向後遍歷,遇到資料結點時將相鄰的兩個前驅後繼的關係進行乙個逆置 首先考慮到頭節點時空結點,略去頭結點並釋放 struct node p...