Processing math: 100%
Ask Your Question
2

Implementace fronty pomocí kruhového pole s O(1) vkládáním

asked Oct 8 '14

Greg gravatar image

updated Oct 9 '14

Miro Hrončok gravatar image

Zdravím,

Chludil nás zaúkoloval, ať se doma koukneme, jak se implementuje fronta přes kruhové pole. Říkal myslím, že všechno tam může mít konstantní složitost a na přednáškách to bylo prezentovaný podobně.

image description

Nějak ale nemůžu vymyslet, jak udělat konstantní insert. Přece když mi dojde kapacita a musím nafukovat, je potřeba všechny prvky z jedné strany posunout nakonec/začátek ne? Nebo je tam nějaký trik, jak to obejít?

A nebo se automaticky předpokládá amortizovaná složitost?

Předem díky za odpověď...

add a comment

1 Answer

Sort by » oldest newest most voted
3

answered Oct 8 '14

MiB gravatar image

Řekl bych, že se nepočítá s vyčerpáním kapacity. Někdy můžeš naalokovat celou velikost předem podle maximálního počtu prvků. Jinak je to jako s každým jiným polem – při zvětšení musíš kopírovat, jen v tomto případě kopíruješ dvě části zvlášť. Nicméně pokud zvětšuješ kapacitu po větších přírůstcích (např. 1,5× nebo 2×), můžeš to občasné překopírování zanedbat.

Pokud je maximální počet prvků příliš velký nebo se počet prvků dramaticky liší případ od případu, může být vhodnější implementace spojovým seznamem.

link

Comments

přesně tak, pokud se zařídí aby se kapacita nezmenšovala nebo aby od začátku byla správně velká, tak je i vkládání a zvyšování kapacity amortizovaně konstantní.

Sandokan (Oct 8 '14)

Proto je tam isFull, nepocita se se zvysovanim kapacity.

Ashrak (Oct 17 '14)
add a comment

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

Add answer

[hide preview]

Question tools

Follow
1 follower

Stats

Asked: Oct 8 '14

Seen: 903 times

Last updated: Oct 08 '14