list.linkedlist

## Class ShallowDoublyLinkedList

- java.lang.Object
- - list.linkedlist.ShallowDoublyLinkedList

- All Implemented Interfaces:
    CommonBase, ShallowList

      class ShallowDoublyLinkedList
      extends java.lang.Object
      implements ShallowList

  Implementace mělkého seřaditelného seznamu.

  Popis: Implementace seznamu, který umí navíc vyrábět mělké kopie pro potřeby řazení. Seznam nesmí být prázdný!

  Užití: instance této třídy lze používat v aplikacích.

  Invariant: not isEmpty

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private int` | `count` aktuální počet členů seznamu
    `private DoublyLinkedListMember` | `current` odkaz na běžný člen seznamu
    `private DoublyLinkedListMember` | `first` odkaz na první člen seznamu
    `private DoublyLinkedListMember` | `last` odkaz na poslední člen seznamu
    `private DoublyLinkedListMember` | `latched` odkaz na zachycený člen seznamu.
    `private int` | `moveCounter` Provozní měření.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ShallowDoublyLinkedList(DoublyLinkedListMember lowerBound, DoublyLinkedListMember upperBound, int aCount)` Vyrobí instanci mělkého seřaditelného seznamu.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Element` | `getElement()` Vrátí hodnotu běžného prvku.
    `MemberReference` | `getFirstRef()` Vrátí odkaz na první člen seznamu.
    `MemberReference` | `getLastRef()` Vrátí odkaz na poslední člen seznamu.
    `int` | `getMoveCounter()` Provozní měření.
    `void` | `insertLast()` Zatřídí poslední prvek před běžný.
    `boolean` | `isFirst()` Zjistí, zda běžný prvek je první.
    `boolean` | `isLast()` Zjistí, zda běžný prvek je poslední.
    `Element` | `latch()` Zachytí odkaz na běžný prvek v seznamu a vrátí jej.
    `ShallowList` | `makeLowerHalfSequence()` Vyrobí mělkou kopii seznamu obsahující spodní polovinu.
    `ShallowList` | `makeShrinkList()` Vyrobí mělkou kopii celého seznamu.
    `ShallowList` | `makeStretchDownList()` Vyrobí mělkou kopii seznamu obsahující posledního člena.
    `ShallowList` | `makeStretchUpList()` Vyrobí mělkou kopii seznamu obsahující prvního člena.
    `ShallowList` | `makeUpperHalfSequence()` Vyrobí mělkou kopii seznamu obsahující horní polovinu.
    `void` | `moveDownTo(int index)` Učiní běžným prvkem index-tý prvek před posledním prvekm.
    `void` | `moveFirst()` Učiní hlavu seznamu běžným prvkem.
    `void` | `moveLast()` Učiní ocas běžným prvkem.
    `void` | `moveNext()` Učiní následující prvek běžným prvkem.
    `void` | `movePrev()` Učiní předcházející prvek běžným prvkem.
    `void` | `moveUpTo(int index)` Učiní běžným prvkem index-tý prvek za prvním prvekm.
    `void` | `resetMoveCounter()` Vynuluje provozní měření.
    `void` | `restore()` Obnoví posledně zachyzený běžný prvek.
    `void` | `setElement(Element value)` Nastaví hodnotu běžného prvku do členu datové struktury.
    `void` | `shrinkDown()` Smrskne seznam o jednoho člena před posledního.
    `void` | `shrinkUp()` Smrskne seznam o jednoho člena za prvního.
    `void` | `stretchDown()` Roztáhne seznam o jednoho člena před prvního.
    `void` | `stretchUp()` Roztáhne seznam o jednoho člena za posledního.
    `void` | `swap(CommonBase aList)` Zamění běžné prvky dvou seznamů.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### first

          private DoublyLinkedListMember first

      odkaz na první člen seznamu

    - #### last

          private DoublyLinkedListMember last

      odkaz na poslední člen seznamu

    - #### current

          private DoublyLinkedListMember current

      odkaz na běžný člen seznamu

    - #### latched

          private DoublyLinkedListMember latched

      odkaz na zachycený člen seznamu.

    - #### count

          private int count

      aktuální počet členů seznamu

    - #### moveCounter

          private int moveCounter

      Provozní měření. Počet elementárních operací přesunu běžného prvku.

  - ### Constructor Detail

    - #### ShallowDoublyLinkedList

          public ShallowDoublyLinkedList(DoublyLinkedListMember lowerBound,
                                         DoublyLinkedListMember upperBound,
                                         int aCount)

      Vyrobí instanci mělkého seřaditelného seznamu.
      Parameters:
        `lowerBound` - první člen mělkého seznamu
        `upperBound` - poslední člen mělkého seznamu
        `aCount` - počet prvků mělkého seznamu

  - ### Method Detail

    - #### setElement

          public void setElement(Element value)

      Description copied from interface: `CommonBase`
      Nastaví hodnotu běžného prvku do členu datové struktury.

      Vyžaduje: not isEmpty

      Specified by:
        `setElement` in interface `CommonBase`
      Parameters:
        `value` - prvek, který má být uložen do členu

    - #### getElement

          public Element getElement()

      Description copied from interface: `CommonBase`
      Vrátí hodnotu běžného prvku.

      Vyžaduje: not isEmpty

      Specified by:
        `getElement` in interface `CommonBase`
      Returns:
        hodnota běžného prvku

    - #### getMoveCounter

          public int getMoveCounter()

      Description copied from interface: `CommonBase`
      Provozní měření.
      Specified by:
        `getMoveCounter` in interface `CommonBase`
      Returns:
        počet přesunů běžného prvku

    - #### resetMoveCounter

          public void resetMoveCounter()

      Description copied from interface: `CommonBase`
      Vynuluje provozní měření.
      Specified by:
        `resetMoveCounter` in interface `CommonBase`

    - #### moveFirst

          public void moveFirst()

      Description copied from interface: `ShallowList`
      Učiní hlavu seznamu běžným prvkem.
      Specified by:
        `moveFirst` in interface `ShallowList`

    - #### moveLast

          public void moveLast()

      Description copied from interface: `ShallowList`
      Učiní ocas běžným prvkem.
      Specified by:
        `moveLast` in interface `ShallowList`

    - #### moveNext

          public void moveNext()

      Description copied from interface: `ShallowList`
      Učiní následující prvek běžným prvkem.

      Vyžaduje: not isLast

      Specified by:
        `moveNext` in interface `ShallowList`

    - #### movePrev

          public void movePrev()

      Description copied from interface: `ShallowList`
      Učiní předcházející prvek běžným prvkem.

      Vyžaduje: not isFirst

      Specified by:
        `movePrev` in interface `ShallowList`

    - #### moveUpTo

          public void moveUpTo(int index)

      Učiní běžným prvkem index-tý prvek za prvním prvekm.

      Popis: otestuje, že index nepřekročí horní mez.

      Vyžaduje: (index in [0..Pred(getSize)])

      Specified by:
        `moveUpTo` in interface `ShallowList`
      Parameters:
        `index` - pořadové číslo prvku (počítá se od 0)

    - #### moveDownTo

          public void moveDownTo(int index)

      Učiní běžným prvkem index-tý prvek před posledním prvekm.

      Popis: otestuje, že index nepřekročí dolní mez.

      Vyžaduje: (index in [0..Pred(getSize)])

      Specified by:
        `moveDownTo` in interface `ShallowList`
      Parameters:
        `index` - pořadové číslo prvku (počítá se od 0)

    - #### isFirst

          public boolean isFirst()

      Description copied from interface: `ShallowList`
      Zjistí, zda běžný prvek je první.
      Specified by:
        `isFirst` in interface `ShallowList`
      Returns:
        true když je první, jinak false

    - #### isLast

          public boolean isLast()

      Description copied from interface: `ShallowList`
      Zjistí, zda běžný prvek je poslední.
      Specified by:
        `isLast` in interface `ShallowList`
      Returns:
        true když je poslední, jinak false

    - #### insertLast

          public void insertLast()

      Description copied from interface: `ShallowList`
      Zatřídí poslední prvek před běžný.
      Specified by:
        `insertLast` in interface `ShallowList`

    - #### swap

          public void swap(CommonBase aList)

      Description copied from interface: `ShallowList`
      Zamění běžné prvky dvou seznamů.
      Specified by:
        `swap` in interface `ShallowList`
      Parameters:
        `aList` - druhý seznam potřebný k záměně prvků

    - #### stretchUp

          public void stretchUp()

      Description copied from interface: `ShallowList`
      Roztáhne seznam o jednoho člena za posledního.
      Specified by:
        `stretchUp` in interface `ShallowList`

    - #### stretchDown

          public void stretchDown()

      Description copied from interface: `ShallowList`
      Roztáhne seznam o jednoho člena před prvního.
      Specified by:
        `stretchDown` in interface `ShallowList`

    - #### shrinkUp

          public void shrinkUp()

      Description copied from interface: `ShallowList`
      Smrskne seznam o jednoho člena za prvního.
      Specified by:
        `shrinkUp` in interface `ShallowList`

    - #### shrinkDown

          public void shrinkDown()

      Description copied from interface: `ShallowList`
      Smrskne seznam o jednoho člena před posledního.
      Specified by:
        `shrinkDown` in interface `ShallowList`

    - #### getFirstRef

          public MemberReference getFirstRef()

      Description copied from interface: `ShallowList`
      Vrátí odkaz na první člen seznamu. Dá se porovnat s jiným odkazem.
      Specified by:
        `getFirstRef` in interface `ShallowList`
      Returns:
        odkaz na první člen seznamu

    - #### getLastRef

          public MemberReference getLastRef()

      Description copied from interface: `ShallowList`
      Vrátí odkaz na poslední člen seznamu. Dá se porovnat s jiným odkazem.
      Specified by:
        `getLastRef` in interface `ShallowList`
      Returns:
        odkaz na poslední člen seznamu

    - #### latch

          public Element latch()

      Description copied from interface: `ShallowList`
      Zachytí odkaz na běžný prvek v seznamu a vrátí jej.
      Specified by:
        `latch` in interface `ShallowList`
      Returns:
        odkaz na běžný prvek v seznamu

    - #### restore

          public void restore()

      Description copied from interface: `ShallowList`
      Obnoví posledně zachyzený běžný prvek. Učiní z něj prvek běžný.
      Specified by:
        `restore` in interface `ShallowList`

    - #### makeShrinkList

          public ShallowList makeShrinkList()

      Description copied from interface: `ShallowList`
      Vyrobí mělkou kopii celého seznamu.
      Specified by:
        `makeShrinkList` in interface `ShallowList`
      Returns:
        mělká kopie celého seznamu

    - #### makeStretchUpList

          public ShallowList makeStretchUpList()

      Description copied from interface: `ShallowList`
      Vyrobí mělkou kopii seznamu obsahující prvního člena.
      Specified by:
        `makeStretchUpList` in interface `ShallowList`
      Returns:
        mělká kopie seznamu obsahující prvního člena

    - #### makeStretchDownList

          public ShallowList makeStretchDownList()

      Description copied from interface: `ShallowList`
      Vyrobí mělkou kopii seznamu obsahující posledního člena.
      Specified by:
        `makeStretchDownList` in interface `ShallowList`
      Returns:
        mělká kopie seznamu obsahující posledního člena

    - #### makeLowerHalfSequence

          public ShallowList makeLowerHalfSequence()

      Description copied from interface: `ShallowList`
      Vyrobí mělkou kopii seznamu obsahující spodní polovinu.
      Specified by:
        `makeLowerHalfSequence` in interface `ShallowList`
      Returns:
        mělká kopie seznamu obsahující spodní polovinu

    - #### makeUpperHalfSequence

          public ShallowList makeUpperHalfSequence()

      Vyrobí mělkou kopii seznamu obsahující horní polovinu.
      Specified by:
        `makeUpperHalfSequence` in interface `ShallowList`
      Returns:
        mělká kopie seznamu obsahující horní polovinu