Queue

package
v0.7.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 23, 2024 License: MIT Imports: 2 Imported by: 0

README

Queue

带类型的队列

使用
package Queue_test

import (
	"fmt"
	"testing"

	"github.com/Drelf2018/TypeGo/Queue"
)

func countPrime(n int) (count int) {
	composite := make([]bool, n+1)
	q := Queue.New(2)
	for i := range q.Chan() {
		count++
		for j := 2; i*j <= n; j++ {
			composite[i*j] = true
		}
		for j := i + 1; j <= n; j++ {
			if !composite[j] {
				q.Push(j)
				break
			}
		}
		q.Next()
	}
	return
}

func TestQueue(t *testing.T) {
	fmt.Printf("countPrime(1000): %v\n", countPrime(1000))
	fmt.Printf("countPrime(10000): %v\n", countPrime(10000))
	fmt.Printf("countPrime(100000): %v\n", countPrime(100000))
	fmt.Printf("countPrime(1000000): %v\n", countPrime(1000000))
	fmt.Printf("countPrime(10000000): %v\n", countPrime(10000000))
	fmt.Printf("countPrime(100000000): %v\n", countPrime(100000000))
	fmt.Printf("countPrime(1000000000): %v\n", countPrime(1000000000))
}
命令
go test github.com/Drelf2018/TypeGo/Queue -v
控制台
=== RUN   TestQueue
countPrime(1000): 168
countPrime(10000): 1229
countPrime(100000): 9592
countPrime(1000000): 78498
countPrime(10000000): 664579
countPrime(100000000): 5761455
countPrime(1000000000): 50847534
--- PASS: TestQueue (67.16s)
PASS
ok      github.com/Drelf2018/TypeGo/Queue       67.298s

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Queue

type Queue[T any] struct {
	// contains filtered or unexported fields
}

func New

func New[T any](items ...T) *Queue[T]

func (*Queue[T]) Back

func (q *Queue[T]) Back() (item T, ok bool)

func (*Queue[T]) Chan

func (q *Queue[T]) Chan() Chan.Chan[T]

func (*Queue[T]) IsEmpty

func (q *Queue[T]) IsEmpty() bool

func (*Queue[T]) MustBack

func (q *Queue[T]) MustBack() T

func (*Queue[T]) MustPeek

func (q *Queue[T]) MustPeek() T

func (*Queue[T]) MustPop

func (q *Queue[T]) MustPop() T

func (*Queue[T]) Next

func (q *Queue[T]) Next(items ...T)

func (*Queue[T]) Peek

func (q *Queue[T]) Peek() (item T, ok bool)

func (*Queue[T]) Pop

func (q *Queue[T]) Pop() (item T, ok bool)

func (*Queue[T]) Push

func (q *Queue[T]) Push(items ...T)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL