diff options
| -rw-r--r-- | 328/go.mod | 3 | ||||
| -rw-r--r-- | 328/main.go | 52 | 
2 files changed, 55 insertions, 0 deletions
| diff --git a/328/go.mod b/328/go.mod new file mode 100644 index 0000000..a6abc32 --- /dev/null +++ b/328/go.mod @@ -0,0 +1,3 @@ +module 328 + +go 1.18 diff --git a/328/main.go b/328/main.go new file mode 100644 index 0000000..64f4a6b --- /dev/null +++ b/328/main.go @@ -0,0 +1,52 @@ +package main + +import "fmt" + +type ListNode struct { +	Val  int +	Next *ListNode +} + +func dumpList(head *ListNode) { +	for head.Next != nil { +		fmt.Println(head.Val) +		head = head.Next +	} +	fmt.Println(head.Val) +	fmt.Println() +} + +func oddEvenList(head *ListNode) *ListNode { +	if head == nil { +		return nil +	} +	odd, even := head, head.Next +	evenHead := even +	for even != nil && even.Next != nil { +		odd.Next = even.Next +		odd = odd.Next +		even.Next = odd.Next +		even = even.Next +	} +	odd.Next = evenHead +	return head +} + +func main() { +	node1 := &ListNode{1, nil} +	node2 := &ListNode{2, nil} +	node3 := &ListNode{3, nil} +	node4 := &ListNode{4, nil} +	node5 := &ListNode{5, nil} +	node1.Next = node2 +	node2.Next = node3 +	node3.Next = node4 +	node4.Next = node5 +	head := node1 +	head = oddEvenList(node1) +	for head.Next != nil { +		fmt.Println(head.Val) +		head = head.Next +	} +	fmt.Println(head.Val) +} | 
