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:
@@ -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