用go语言编写程序基于结构体和指针定义单链表和双向循环链表。
时间: 2023-06-15 07:05:31 浏览: 111
以下是基于结构体和指针定义单链表和双向循环链表的示例代码:
单链表:
```go
package main
import "fmt"
type ListNode struct {
val int
next *ListNode
}
func main() {
// 创建链表
head := &ListNode{val: 0, next: nil}
node1 := &ListNode{val: 1, next: nil}
node2 := &ListNode{val: 2, next: nil}
node3 := &ListNode{val: 3, next: nil}
head.next = node1
node1.next = node2
node2.next = node3
// 遍历链表
p := head
for p != nil {
fmt.Printf("%d ", p.val)
p = p.next
}
}
```
双向循环链表:
```go
package main
import "fmt"
type ListNode struct {
val int
prev *ListNode
next *ListNode
}
func main() {
// 创建链表
head := &ListNode{val: 0, prev: nil, next: nil}
node1 := &ListNode{val: 1, prev: nil, next: nil}
node2 := &ListNode{val: 2, prev: nil, next: nil}
node3 := &ListNode{val: 3, prev: nil, next: nil}
head.next = node1
node1.prev = head
node1.next = node2
node2.prev = node1
node2.next = node3
node3.prev = node2
node3.next = head
head.prev = node3
// 遍历链表
p := head.next
for p != head {
fmt.Printf("%d ", p.val)
p = p.next
}
}
```
以上代码仅为示例代码,实际应用中需要根据具体情况进行修改。
阅读全文