mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-23 13:52:26 +08:00
docs: add doc for LinkedQueue
This commit is contained in:
@@ -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
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user