go语言各写一个各种数据结构
时间: 2023-10-12 07:15:24 浏览: 52
好的,以下是Go语言中常用的几种数据结构实现:
1. 数组(Array):
```
package main
import "fmt"
func main() {
// 定义一个长度为3的整型数组
var arr [3]int
arr[0] = 1
arr[1] = 2
arr[2] = 3
fmt.Println(arr)
}
```
2. 切片(Slice):
```
package main
import "fmt"
func main() {
// 定义一个整型切片
var slice []int
slice = append(slice, 1)
slice = append(slice, 2)
slice = append(slice, 3)
fmt.Println(slice)
}
```
3. 队列(Queue):
```
package main
import "fmt"
type Queue []int
func (q *Queue) Push(n int) {
*q = append(*q, n)
}
func (q *Queue) Pop() int {
if len(*q) == 0 {
return -1
}
front := (*q)[0]
*q = (*q)[1:]
return front
}
func main() {
queue := Queue{}
queue.Push(1)
queue.Push(2)
queue.Push(3)
fmt.Println(queue.Pop())
fmt.Println(queue.Pop())
fmt.Println(queue.Pop())
}
```
4. 链表(Linked List):
```
package main
import "fmt"
type ListNode struct {
Val int
Next *ListNode
}
func NewListNode(val int) *ListNode {
return &ListNode{Val: val, Next: nil}
}
func (head *ListNode) Append(val int) {
newNode := NewListNode(val)
p := head
for p.Next != nil {
p = p.Next
}
p.Next = newNode
}
func (head *ListNode) Print() {
p := head
for p != nil {
fmt.Printf("%d ", p.Val)
p = p.Next
}
fmt.Println()
}
func main() {
head := NewListNode(1)
head.Append(2)
head.Append(3)
head.Print()
}
```
5. 栈(Stack):
```
package main
import "fmt"
type Stack []int
func (s *Stack) Push(n int) {
*s = append(*s, n)
}
func (s *Stack) Pop() int {
if len(*s) == 0 {
return -1
}
top := (*s)[len(*s)-1]
*s = (*s)[:len(*s)-1]
return top
}
func main() {
stack := Stack{}
stack.Push(1)
stack.Push(2)
stack.Push(3)
fmt.Println(stack.Pop())
fmt.Println(stack.Pop())
fmt.Println(stack.Pop())
}
```