| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package main
- import (
- "container/list"
- "fmt"
- )
- func printList(l *list.List) {
- for temp := l.Front(); temp != nil; temp = temp.Next() {
- fmt.Printf("%v ", temp.Value)
- }
- }
- func main() {
- // foo1()
- foo2()
- /*
- mylist := list.New()
- mylist.PushBack(0)
- mylist.PushBack(1)
- mylist.PushBack(2)
- mylist.PushBack(3)
- // Получаем указатель на элемент который добавили (*Element)
- elem3 := mylist.PushBack(4)
- printList(mylist)
- // удаляем элемент '3' по указателю (*Element)
- mylist.Remove(elem3)
- // так же можем воспользоваться методом Front()/Back() чтобы
- // получить первый/последний элемент
- mylist.Remove(mylist.Front())
- fmt.Printf("\nПосле удаления\n")
- printList(mylist)
- // mylist.PushFront(1)
- // mylist.PushFront(2)
- // mylist.PushFront(3)
- */
- }
- func foo1() {
- // Создаем контейнер list и добавляем в него элементы
- mylist := list.New()
- mylist.PushBack(2)
- mylist.PushBack(5)
- mylist.PushBack(3)
- mylist.PushBack(11)
- mylist.PushBack(12)
- // Проходимся по элементам и удаляем те, которые меньше 10
- for e := mylist.Front(); e != nil; {
- // Запоминаем следующий элемент перед удалением текущего
- next := e.Next()
- if e.Value.(int) < 10 {
- // Удалялем текущий элемент из списка
- mylist.Remove(e)
- }
- e = next // Переходим к следующему элементу
- }
- // Выводим список после удаления элементов
- for e := mylist.Front(); e != nil; e = e.Next() {
- fmt.Println(e.Value)
- }
- }
- // ---------------------------------------------------------------
- func foo2() {
- queue := list.New()
- Push(1, queue)
- Push(2, queue)
- Push(3, queue)
- printQueue(queue)
- Pop(queue)
- printQueue(queue)
- // fmt.Println(Pop(queue))
- // printQueue(queue)
- }
- // Добавление элементов в очередь
- func Push(elem interface{}, queue *list.List) {
- queue.PushBack(elem)
- }
- // Удуление элемента и его возврат
- func Pop(queue *list.List) interface{} {
- if queue.Front() != nil {
- return nil
- }
- return queue.Remove(queue.Front())
- }
- // Печать очереди в одну строку без пробелов
- func printQueue(queue *list.List) {
- for temp := queue.Front(); temp != nil; temp = temp.Next() {
- fmt.Print(temp.Value)
- }
- }
|