diff options
Diffstat (limited to 'reverse_linked_list.c')
-rw-r--r-- | reverse_linked_list.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/reverse_linked_list.c b/reverse_linked_list.c new file mode 100644 index 0000000..89358f8 --- /dev/null +++ b/reverse_linked_list.c @@ -0,0 +1,28 @@ +// 206. Reverse Linked List +#include "leetcode.h" + +/* + * given the 'head' of a singly linked list, reverse the list, and return the + * reversed list. + */ + +struct ListNode { + int val; + struct ListNode *next; +}; + +struct ListNode *reverseList(struct ListNode *head) { + if (!head || !head->next) + return head; + struct ListNode *new = (struct ListNode *)malloc(sizeof(struct ListNode)); + new->val = head->val; + new->next = NULL; + head = head->next; + while (head) { + struct ListNode *tmp = new; + new = head; + head = head->next; + new->next = tmp; + } + return new; +} |