main.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package main
  2. import "fmt"
  3. type ListNode struct {
  4. Val int
  5. Next *ListNode
  6. }
  7. func main() {
  8. // fmt.Print("hello")
  9. data1 := []int{1, 2, 4}
  10. data2 := []int{1, 3, 4}
  11. list1 := new(ListNode)
  12. p1 := list1
  13. list2 := new(ListNode)
  14. p2 := list2
  15. for i := 0; i < len(data1); i++ {
  16. tmp := new(ListNode)
  17. tmp.Val = data1[i]
  18. p1.Next = tmp
  19. p1 = tmp
  20. }
  21. for i := 0; i < len(data2); i++ {
  22. tmp := new(ListNode)
  23. tmp.Val = data2[i]
  24. p2.Next = tmp
  25. p2 = tmp
  26. }
  27. list3 := mergeTwoLists(list1.Next, list2.Next)
  28. for list3 != nil {
  29. fmt.Print(list3.Val)
  30. list3 = list3.Next
  31. }
  32. }
  33. func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
  34. head := new(ListNode)
  35. node := head
  36. for list1 != nil && list2 != nil {
  37. if list1.Val <= list2.Val {
  38. tmp := new(ListNode)
  39. tmp.Val = list1.Val
  40. node.Next = tmp
  41. node = tmp
  42. list1 = list1.Next
  43. } else if list1.Val > list2.Val {
  44. tmp := new(ListNode)
  45. tmp.Val = list2.Val
  46. node.Next = tmp
  47. node = tmp
  48. list2 = list2.Next
  49. }
  50. }
  51. for list1 != nil {
  52. tmp := new(ListNode)
  53. tmp.Val = list1.Val
  54. node.Next = tmp
  55. node = tmp
  56. list1 = list1.Next
  57. }
  58. for list2 != nil {
  59. tmp := new(ListNode)
  60. tmp.Val = list2.Val
  61. node.Next = tmp
  62. node = tmp
  63. list2 = list2.Next
  64. }
  65. return head.Next
  66. }