0

循環配列クラスを作成するプロジェクトがあり、使用する言語はpythonです。私はPythonのクラスに慣れていませんが、いくつかのWebページや本の章を読んだ後、それらがどのように機能するかを理解していると思います。しかし、私は助けが必要なので、私はここSOで素晴らしい先生に来るだろうと思いました:)

私たちのクラスは、いくつかの操作を実装できなければなりません。前に挿入、後ろに挿入、インデックスに挿入、前から削除、後ろから削除、インデックスから削除。

コーディングを始めましたが、いくつかの問題が発生しています。構文が正しいかどうかは100%わかりません。

これが私がこれまでに持っているものです:

class circular:

    def __init__(self):
        self.store = []
        self.capacity = len(self.store)
        self.size = 0
        self.startIndex = 0
        self.endIndex = 0

    def decrementIndex(self):
        index = index - 1
        if index < 0:
            self.store = self.store + self.capacity

    def incrementIndex(self):
        index = index + 1
        if index == self.capacity:
            index = index - self.capacity

    def addToBack(self, value):
        self.store[self.endIndex] = value
        self.endIndex = incrementIndex(self.endIndex)
        self.size += 1

    def addToFront(self, value):
        if self.size == 0:
            addToBack(self, value)
        else:
            self.startIndex = decrementIndex(self.startIndex)
            self.store[self.startIndex] = value
            self.size += 1

私はそこで立ち止まって、いくつかの関数、主にaddTofrontとaddTobackのテストを開始しました。c = Circular()およびc.addToBack(2)を使用してIDLEでテストすると、インデックスエラーが発生します...理由はわかりません。それだけが問題ではありません。それは私が行き詰まり、前進するための助けが必要なところです。

怠惰で問題の調査を試みていないからではなく、助けが必要で学びたいという理由でここに投稿しています。すでにありがとう!

4

1 に答える 1

1

__init__あなたが設定した

self.store = []

addToBackあなたの中で

self.store[self.endIndex] = value

これが循環配列での最初の操作であり、2として渡す場合value、それは次のようになります。

[][0] = 2

問題は明らかです。空のリストにはインデックスが0なく、インデックスもまったくありません。

別の方法でアイテムをリストに追加する必要があります。

それを理解するのは宿題の一部なので、正確にどのように説明するつもりはありません。

于 2011-09-16T22:06:16.780 に答える