插入逆序master
authorfcdfl <[email protected]>
Tue, 15 Mar 2022 09:26:15 +0000 (15 17:26 +0800)
committerfcdfl <[email protected]>
Tue, 15 Mar 2022 09:26:15 +0000 (15 17:26 +0800)
ch01/reverse/insert.go [new file with mode: 0644]
ch01/reverse/reverse_test.go

diff --git a/ch01/reverse/insert.go b/ch01/reverse/insert.go
new file mode 100644 (file)
index 0000000..54afe83
--- /dev/null
@@ -0,0 +1,20 @@
+package reverse
+
+import "github.com/isdamir/gotype"
+
+func InsertReverse(node *gotype.LNode) {
+       if node == nil || node.Next == nil {
+               return
+       }
+       var cur, next *gotype.LNode
+       cur = node.Next.Next
+       //设置链表第一个结点为尾结点
+       node.Next.Next = nil
+       //把遍历到的结点插入到头结点的后面
+       for cur != nil {
+               next = cur.Next
+               cur.Next = node.Next
+               node.Next = cur
+               cur = next
+       }
+}
index 59681d9..b78c897 100644 (file)
@@ -23,3 +23,11 @@ func TestRecursiveReverse(t *testing.T) {
        RecursiveReverse(head)
        gotype.PrintNode("逆序后:", head)
 }
+func TestInsertReverse(t *testing.T) {
+       head := &gotype.LNode{}
+       t.Log("插入法逆序")
+       gotype.CreateNode(head, 8)
+       gotype.PrintNode("逆序前:", head)
+       InsertReverse(head)
+       gotype.PrintNode("逆序后:", head)
+}