listtest.go 871 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package algorithm
  2. import "fmt"
  3. type Node struct {
  4. value int
  5. next *Node
  6. }
  7. var head *Node = nil
  8. func InitList(val int) {
  9. var cur *Node = nil
  10. var i int
  11. for i = 1; i <= val; i++ {
  12. node := new(Node)
  13. node.value = i
  14. node.next = nil
  15. if head == nil {
  16. head = node
  17. cur = node
  18. } else {
  19. cur.next = node
  20. cur = node
  21. }
  22. }
  23. }
  24. func PrintList() {
  25. // 打印链表
  26. fmt.Print("list:")
  27. node := head
  28. for {
  29. fmt.Printf("%d ", node.value)
  30. if node.next == nil {
  31. break
  32. }
  33. node = node.next
  34. }
  35. fmt.Println()
  36. }
  37. func ReverseList() {
  38. var header *Node
  39. var next *Node
  40. var pre *Node
  41. header = head
  42. next = nil
  43. pre = nil
  44. // 翻转列表
  45. for {
  46. if header == nil {
  47. break
  48. }
  49. next = header.next
  50. header.next = pre
  51. pre = header
  52. header = next
  53. }
  54. head = pre
  55. }
  56. func Test(size int) {
  57. InitList(size)
  58. PrintList()
  59. ReverseList()
  60. PrintList()
  61. }