Skip to content

Commit d5aaa99

Browse files
committed
add reverse a linked list
1 parent 4058024 commit d5aaa99

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

Linked List/reverse_linked_list.go

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package main
2+
3+
import "fmt"
4+
5+
// ListNode represents a node in the linked list
6+
type ListNode struct {
7+
Val int
8+
Next *ListNode
9+
}
10+
11+
// ReverseListIteratively reverses a linked list iteratively
12+
func ReverseListIteratively(head *ListNode) *ListNode {
13+
var prev, curr *ListNode
14+
curr = head
15+
16+
for curr != nil {
17+
nextTemp := curr.Next
18+
curr.Next = prev
19+
prev = curr
20+
curr = nextTemp
21+
}
22+
23+
return prev
24+
}
25+
26+
// ReverseListRecursively reverses a linked list recursively
27+
func ReverseListRecursively(head *ListNode) *ListNode {
28+
if head == nil || head.Next == nil {
29+
return head
30+
}
31+
32+
newHead := ReverseListRecursively(head.Next)
33+
head.Next.Next = head
34+
head.Next = nil
35+
36+
return newHead
37+
}
38+
39+
func main() {
40+
// Create a linked list: 1 -> 2 -> 3 -> 4 -> 5
41+
head := &ListNode{1, &ListNode{2, &ListNode{3, &ListNode{4, &ListNode{5, nil}}}}}
42+
43+
// Reverse the linked list iteratively
44+
reversedListIteratively := ReverseListIteratively(head)
45+
fmt.Println("Reversed linked list (iteratively):")
46+
for reversedListIteratively != nil {
47+
fmt.Printf("%d ", reversedListIteratively.Val)
48+
reversedListIteratively = reversedListIteratively.Next
49+
}
50+
fmt.Println()
51+
52+
head = &ListNode{1, &ListNode{2, &ListNode{3, &ListNode{4, &ListNode{5, nil}}}}}
53+
// Reverse the linked list recursively
54+
reversedListRecursively := ReverseListRecursively(head)
55+
fmt.Println("Reversed linked list (recursively):")
56+
for reversedListRecursively != nil {
57+
fmt.Printf("%d ", reversedListRecursively.Val)
58+
reversedListRecursively = reversedListRecursively.Next
59+
}
60+
fmt.Println()
61+
}

0 commit comments

Comments
 (0)