Help us shape the future of Go! Take the 2026 Go Developer Survey

gxxorlist

package
v0.3.3 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2020 License: Apache-2.0 Imports: 2 Imported by: 2

Documentation

Overview

Example
// Create a new list and put some numbers in it.
l := New()
e4 := l.PushBack(4)
e1 := l.PushFront(1)
l.InsertBefore(3, e4)
l.InsertAfter(2, e1)

// Iterate through list and print its contents.
for e, p := l.Front(); e != nil; e, p = e.Next(p), e {
	fmt.Println(e.Value)
}
Output:
1
2
3
4

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func OutputElem

func OutputElem(e *XorElement)

func OutputList

func OutputList(l *XorList)

Iterate through list and print its contents.

func OutputListR

func OutputListR(l *XorList)

Iterate through list and print its contents in reverse.

Types

type XorElement

type XorElement struct {
	// Compute the bitwise XOR of this element's previous
	// element's address and its next element's address
	// and @PN stores the result
	PN uintptr

	// The value stored with this element.
	Value interface{}
}

XorElement is an element of a xor-linked list.

func (*XorElement) Next

func (e *XorElement) Next(prev *XorElement) *XorElement

Next returns the next list element or nil.

func (*XorElement) Prev

func (e *XorElement) Prev(next *XorElement) *XorElement

Prev returns the previous list element or nil.

type XorList

type XorList struct {
	// contains filtered or unexported fields
}

XorList represents a doubly linked list. The zero value for XorList is an empty list ready to use.

func New

func New() *XorList

New returns an initialized list.

func (*XorList) Back

func (l *XorList) Back() (back, tail *XorElement)

Back returns the last element of list l or nil.

func (*XorList) Front

func (l *XorList) Front() (front, head *XorElement)

Front returns the first element of list l or nil.

func (*XorList) Init

func (l *XorList) Init() *XorList

Init initializes or clears list l.

func (*XorList) InsertAfter

func (l *XorList) InsertAfter(v interface{}, mark *XorElement) *XorElement

InsertAfter inserts a new element e with value v immediately after mark and returns e. If mark is not an element of l, the list is not modified.

func (*XorList) InsertBefore

func (l *XorList) InsertBefore(v interface{}, mark *XorElement) *XorElement

InsertBefore inserts a new element e with value v immediately before mark and returns e. If mark is not an element of l, the list is not modified.

func (*XorList) Len

func (l *XorList) Len() int

Len returns the number of elements of list l. The complexity is O(1).

func (*XorList) MoveAfter

func (l *XorList) MoveAfter(e, mark *XorElement)

MoveAfter moves element e to its new position after mark. If e or mark is not an element of l, or e == mark, the list is not modified.

func (*XorList) MoveBefore

func (l *XorList) MoveBefore(e, mark *XorElement)

MoveBefore moves element e to its new position before mark. If e or mark is not an element of l, or e == mark, the list is not modified.

func (*XorList) MoveToBack

func (l *XorList) MoveToBack(e *XorElement)

MoveToBack moves element e to the back of list l. If e is not an element of l, the list is not modified.

func (*XorList) MoveToFront

func (l *XorList) MoveToFront(e *XorElement)

MoveToFront moves element e to the front of list l. If e is not an element of l, the list is not modified.

func (*XorList) Output added in v0.2.0

func (l *XorList) Output()

just for test

func (*XorList) PushBack

func (l *XorList) PushBack(v interface{}) *XorElement

PushBack inserts a new element e with value v at the back of list l and returns e.

func (*XorList) PushBackList

func (l *XorList) PushBackList(other *XorList)

PushBackList inserts a copy of an other list at the back of list l. The lists l and other may be the same.

func (*XorList) PushFront

func (l *XorList) PushFront(v interface{}) *XorElement

PushFront inserts a new element e with value v at the front of list l and returns e.

func (*XorList) PushFrontList

func (l *XorList) PushFrontList(other *XorList)

PushFrontList inserts a copy of an other list at the front of list l. The lists l and other may be the same.

func (*XorList) Remove

func (l *XorList) Remove(e *XorElement) interface{}

Remove removes e from l if e is an element of list l. It returns the element value e.Value.

Jump to

Keyboard shortcuts

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