aboutsummaryrefslogtreecommitdiff
path: root/reverse_linked_list.c
diff options
context:
space:
mode:
Diffstat (limited to 'reverse_linked_list.c')
-rw-r--r--reverse_linked_list.c28
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;
+}