2017-03-22 2 views
0

スタック(LIFO)状況: リンクリストでpeek()コマンドを使用すると、複雑さは0(n)になります。なぜ私はリストの最後のオブジェクトだけを読んでいるのですか? 0(1)にする必要がありますか? 待ち行列(FIFO):リンクリストでpeek()を使用すると、複雑さは現在0(1)になります。 違いは何ですか?Stack/Queueのリンクリスト/二重リンクリストの複雑さ?

読んで助けてくれてありがとう。

答えて

0

あなたはその複雑さについて確かですか?スタックの一番上の要素へのアクセスは0(1)です。push()やpop()のようなすべての操作は、スタックのサイズに依存しないので同じです。

スタックの一番下にアクセスしたい場合(要素ごとに一番上の要素から下に移動する必要があるため)、0(n)が得られます。

どこから複雑になったのですか?

+0

私は先生から私の学校でこれを学びました。私は彼に再度尋ねた。そして彼はそれが正しいと言った。私は説明を求めますが、私は理解しませんでした。だから私はここに持ってきているのです... – Someonewhohaveacat

+0

peek()を使って実際にスタック内の要素を見つけることができるのは、唯一の説明です。その場合、私が言及したように、その操作の複雑さはO(n)になります。先頭から始まり、要素ごとに直線的に要素を調べます。ただし、常にスタックの先頭に直接アクセスする必要があります。 さまざまな構造の操作の複雑さを比較した興味深い記事です:http://stackoverflow.com/questions/7294634/what-are-the-time-complexities-of-various-data-structures –

+0

また、これも同様に:http://bigocheatsheet.com/ とここに:https://en.wikipedia.org/wiki/Peek_(data_type_operation) 希望に役立ちます。 –

関連する問題