package plist

import (
	"github.com/davecgh/go-spew/spew"
)

// Node 节点结构
type Node struct {
	next  *Node
	value interface{}
}

// PriorityList
type PriorityList struct {
	size int
	head *Node
}

// New a node
func New() *PriorityList {
	p := new(PriorityList)
	return p
}

// String 展示需要的
func (pl *PriorityList) String() string {

	content := ""

	for cur := pl.head; cur != nil; cur = cur.next {
		content += spew.Sprint(cur.value) + "-"
	}

	if content != "" && content[len(content)-1] == '-' {
		content = content[:len(content)-1]
	}

	return content
}

// insert 插入值
func (pl *PriorityList) nodeInsert(cur *Node, value interface{}) {
	if cur == nil {
		temp := pl.head
		pl.head = &Node{value: value}
		pl.head.next = temp
		return
	}

	temp := cur.next
	cur.next = &Node{value: value}
	cur.next.next = temp
}

// Size 长度
func (pl *PriorityList) Size() int {
	return pl.size
}
