本文整理汇总了Golang中go/chapter02/list.List.Front方法的典型用法代码示例。如果您正苦于以下问题:Golang List.Front方法的具体用法?Golang List.Front怎么用?Golang List.Front使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类go/chapter02/list.List
的用法示例。
在下文中一共展示了List.Front方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: isPalindromeUsingStack
//APPROACH - II
func isPalindromeUsingStack(l *list.List) bool {
if l == nil {
return false
}
st := stack.New()
slow := l.Front()
fast := l.Front()
for fast != nil && fast.Next() != nil {
st.Push(slow.Value.(int))
slow = slow.Next()
fast = fast.Next().Next()
}
//To ignore the middle element in case of odd length list
if fast.Next() == nil {
slow = slow.Next()
}
for slow != nil {
m := st.Pop().(int)
n := slow.Value.(int)
if m != n {
return false
}
slow = slow.Next()
}
return true
}
示例2: reverseList
//Reverse list function
func reverseList(l *list.List) *list.List {
m := list.New()
for e := l.Front(); e != nil; e = e.Next() {
m.PushFront(e.Value.(int))
}
return m
}
示例3: isPalindrome
//Palinfrome function using reverse list approach - Iterative
func isPalindrome(l *list.List) bool {
rev := reverseList(l)
for e, f := l.Front(), rev.Front(); e != nil && f != nil; e, f = e.Next(), f.Next() {
if e.Value.(int) != f.Value.(int) {
return false
}
}
return true
}
示例4: removeDuplicate
func removeDuplicate(l *list.List) *list.List {
sMap = make(map[int]bool)
var next *list.Element
for e := l.Front(); e != nil; e = next {
next = e.Next()
m := e.Value.(int)
//To verify whether the node value present in the map
if sMap[m] == true {
l.Remove(e)
} else {
sMap[m] = true
}
}
return l
}
示例5: findKFromLast
//Iterative function to find the kth from last element
func findKFromLast(l *list.List, k int) *list.Element {
size := l.Len()
//Base condition. If the size of the list is less than k then kth element cannot be found
if size < k {
return nil
}
var elem *list.Element
elem = l.Front()
for i := 1; i < k; i++ {
elem = elem.Next()
}
var first *list.Element
for first = l.Front(); first != nil && elem != nil; elem, first = elem.Next(), first.Next() {
//return the current node when current+k position is nil
if elem.Next() == nil {
return first
}
}
return nil
}
示例6: splitAroundX
//Function to split the list around the value x
func splitAroundX(l *list.List, x int) *list.List {
if l == nil {
return nil
}
//Two lists for less than x and greater than X
lThanX := list.New()
gThanX := list.New()
for e := l.Front(); e != nil; e = e.Next() {
m := e.Value.(int)
//Compare the value of x with the current node value and append to the respective list
if m < x {
lThanX.PushBack(m)
} else {
gThanX.PushBack(m)
}
}
lThanX.PushBackList(gThanX)
return lThanX
}
示例7: removeDuplicate
func removeDuplicate(l *list.List) *list.List {
var next *list.Element
var inNext *list.Element
for e := l.Front(); e != nil; e = next {
m := e.Value.(int)
next = e.Next()
//Inner for loop to iterate from the current node
for f := e; f != nil; f = inNext {
n := f.Value.(int)
inNext = f.Next()
if e != f {
//To check whether the values m and n are same. If so, remove the node from the list
if m == n {
l.Remove(f)
}
}
}
}
return l
}
示例8: addLists
//Function to add the list
func addLists(l *list.List, m *list.List) *list.List {
if l == nil && m == nil {
return nil
}
lLength := l.Len()
mLength := m.Len()
carry := 0
value := 0
resList := list.New()
var e *list.Element
var f *list.Element
for e, f = l.Front(), m.Front(); e != nil && f != nil; e, f = e.Next(), f.Next() {
value = carry + e.Value.(int) + f.Value.(int)
//get the carry and value
carry = 0
carry = value / 10
value = value % 10
resList.PushFront(value)
}
//To identify the long list if the size is different
var p *list.Element
if lLength > mLength {
p = e
} else {
p = f
}
for ; p != nil; p = p.Next() {
value = carry + p.Value.(int)
carry = 0
carry = value / 10
value = value % 10
resList.PushFront(value)
}
if carry != 0 {
resList.PushFront(carry)
}
return resList
}
示例9: findLoopsInList
func findLoopsInList(l *list.List) *list.Element {
if l == nil {
return nil
}
var head *list.Element
var slow *list.Element
var fast *list.Element
head = l.Front()
for slow, fast = l.Front(), l.Front(); slow != nil && fast != nil; slow, fast = slow.Next(), fast.Next().Next() {
if slow == fast {
break
}
}
if fast == nil || fast.Next() == nil {
return nil
}
slow = head
for slow != fast {
slow = slow.Next()
fast = fast.Next()
}
return fast
}