链表作为最基本的数据结构,它不仅仅在实际应用中有着非常重要的作用,而且也是程序员面试笔试必考的内容。
详情请Google吧。
1、如何实现链表的逆序
就地逆序
package main import ( "fmt" _ "fmt" _ "github.com/ha666/golibs" ."github.com/isdamir/gotype" //引入定义的数据结构 ) //带头结点的逆序 func Reverse(node *LNode) { if node ==nil||node.Next==nil { return } var pre *LNode //定义前驱结点 var cur *LNode //定义当前结点 next:=node.Next //定义后继结点 for next!=nil { cur=next.Next next.Next=pre pre=next next=cur } node.Next=pre } func main() { head :=&LNode{} fmt.Println("就地逆序") CreateNode(head,10) PrintNode("逆序前:",head) Reverse(head) PrintNode("逆序后:",head) } //就地逆序 //逆序前:1 2 3 4 5 6 7 8 9 10 //逆序后:10 9 8 7 6 5 4 3 2 1 ////创建链表 //func CreateNode(node *LNode, max int) { // cur := node // for i := 1; i < max+1; i++ { // cur.Next = &LNode{} // cur.Next.Data = i // cur = cur.Next // } //}