1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-08 06:32:28 +08:00

docs: add doc for LinkedQueue

This commit is contained in:
dudaodong
2022-06-04 18:57:43 +08:00
parent 4718da44f4
commit a7dce5e4d3

View File

@@ -359,6 +359,318 @@ func main() {
### 2. LinkedQueue
Common queue implemented by link.
### <span id="NewLinkedQueue">NewLinkedQueue</span>
<p>Return a LinkedQueue pointer with </p>
<b>Signature:</b>
```go
func NewLinkedQueue[T any]() *LinkedQueue[T]
type LinkedQueue[T any] struct {
head *datastructure.QueueNode[T]
tail *datastructure.QueueNode[T]
length int
}
type QueueNode[T any] struct {
Value T
Next *QueueNode[T]
}
```
<b>Example:</b>
```go
package main
import (
"fmt"
queue "github.com/duke-git/lancet/v2/datastructure/queue"
)
func main() {
q := queue.NewLinkedQueue[int]()
fmt.Println(q.Data()) // []
}
```
### <span id="LinkedQueue_Data">Data</span>
<p>Get all queue data</p>
<b>Signature:</b>
```go
func (q *LinkedQueue[T]) Data() []T
```
<b>Example:</b>
```go
package main
import (
"fmt"
queue "github.com/duke-git/lancet/v2/datastructure/queue"
)
func main() {
q := queue.NewLinkedQueue[int]()
fmt.Println(q.Data()) // []
}
```
### <span id="LinkedQueue_Enqueue">Enqueue</span>
<p>Put element into queue</p>
<b>Signature:</b>
```go
func (q *LinkedQueue[T]) Enqueue(value T)
```
<b>Example:</b>
```go
package main
import (
"fmt"
queue "github.com/duke-git/lancet/v2/datastructure/queue"
)
func main() {
q := queue.NewLinkedQueue[int](5)
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
fmt.Println(q.Data()) // 1,2,3
}
```
### <span id="LinkedQueue_Dequeue">Dequeue</span>
<p>Remove head element of queue and return it</p>
<b>Signature:</b>
```go
func (q *LinkedQueue[T]) Dequeue() (T, error)
```
<b>Example:</b>
```go
package main
import (
"fmt"
queue "github.com/duke-git/lancet/v2/datastructure/queue"
)
func main() {
q := queue.NewLinkedQueue[int](5)
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
fmt.Println(q.Dequeue()) // 1
fmt.Println(q.Data()) // 2,3
}
```
### <span id="LinkedQueue_Front">Front</span>
<p>Just get head element of queue</p>
<b>Signature:</b>
```go
func (q *LinkedQueue[T]) Front() (*T, error)
```
<b>Example:</b>
```go
package main
import (
"fmt"
queue "github.com/duke-git/lancet/v2/datastructure/queue"
)
func main() {
q := queue.NewLinkedQueue[int](5)
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
fmt.Println(q.Front()) // 1
fmt.Println(q.Data()) // 1,2,3
}
```
### <span id="LinkedQueue_Back">Back</span>
<p>Just get tail element of queue</p>
<b>Signature:</b>
```go
func (q *LinkedQueue[T]) Back() (*T, error)
```
<b>Example:</b>
```go
package main
import (
"fmt"
queue "github.com/duke-git/lancet/v2/datastructure/queue"
)
func main() {
q := queue.NewLinkedQueue[int](5)
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
fmt.Println(q.Back()) // 3
fmt.Println(q.Data()) // 1,2,3
}
```
### <span id="LinkedQueue_Size">Size</span>
<p>Get the number of elements in queue</p>
<b>Signature:</b>
```go
func (q *LinkedQueue[T]) Size() int
```
<b>Example:</b>
```go
package main
import (
"fmt"
queue "github.com/duke-git/lancet/v2/datastructure/queue"
)
func main() {
q := queue.NewLinkedQueue[int](5)
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
fmt.Println(q.Size()) // 3
}
```
### <span id="LinkedQueue_IsEmpty">IsEmpty</span>
<p>Check if queue is empty or not</p>
<b>Signature:</b>
```go
func (q *LinkedQueue[T]) IsEmpty() bool
```
<b>Example:</b>
```go
package main
import (
"fmt"
queue "github.com/duke-git/lancet/v2/datastructure/queue"
)
func main() {
q := queue.NewLinkedQueue[int](5)
fmt.Println(q.IsEmpty()) // true
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
fmt.Println(q.IsEmpty()) // false
}
```
### <span id="LinkedQueue_Clear">Clear</span>
<p>Clean all data in queue</p>
<b>Signature:</b>
```go
func (q *LinkedQueue[T]) Clear()
```
<b>Example:</b>
```go
package main
import (
"fmt"
queue "github.com/duke-git/lancet/v2/datastructure/queue"
)
func main() {
q := queue.NewLinkedQueue[int](5)
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
q.Clear()
fmt.Println(q.IsEmpty()) // true
}
```
### <span id="LinkedQueue_Contain">Contain</span>
<p>checks if the value is in queue or not</p>
<b>Signature:</b>
```go
func (q *LinkedQueue[T]) Contain(value T) bool
```
<b>Example:</b>
```go
package main
import (
"fmt"
queue "github.com/duke-git/lancet/v2/datastructure/queue"
)
func main() {
q := queue.NewLinkedQueue[int](5)
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
fmt.Println(q.Contain(1)) // true
fmt.Println(q.Contain(4)) // false
}
```