3

リスト内のアイテムを挿入および削除するこのプログラムがあります。削除機能に問題があります。リスト内のどのインデックスを削除するかをユーザーに伝えてから、リストのサイズを小さくしてから、アイテムを一緒に移動してもらいます。例: 333 222 111 の 2 番目の数字を削除すると、リストは 333 111 のようになり、リストのサイズは 2 に減少します。

前もって感謝します!

/*  insert
 *  parameters:
 *    index  -- the place in the list to insert newItem
 *    newItem -- the item to insert into the list
 *  returns:
 *    true -- if the item is successfully inserted
 *    false -- otherwise
 *  precondition:  0 < index
 *  postcondition:  newItem is in postiion "index" of the list
 *  Algorithm:  stuff
 */

bool myList::insert(int index, ListItemType newItem) {
    if (!(index > 0)) {
        cerr << "insert:  precondition failed with index = " << index << endl;
        return false;
    }

    if (size == MAX_LIST) {
        cout << "List is full" << endl;
        return false;
    }

    if (index > size) {
        items[size] = newItem;
        size++;
        return true;
    }

    //list is not full and index is b/w items 1 and size-1
    for (int i = size; i >= index; i--) {
        items[i] = items[i - 1];

    }

    items[index - 1] = newItem;
    size++;

    return true;
}

bool myList::remove(int index) {
    //I tried this but it doesn't work well enough
    if (!(index > 0)) {
        cerr << "insert:  precondition failed with index = " << index << endl;
        return false;
    }

    for (int i = size; i >= 0; i--) {
        items[index] = items[index + 1];

    }

    size--;
    return true;
}
4

1 に答える 1

2

他の人が言ったように、stl を使用してみてください。ただし、これまでのコードを使用します。forを次のように変更する必要があります。

for (int i = index; i < size - 1; i++)
{
    items[i] = items[i+1];

}

これが行うことは、削除されたアイテムから、各アイテムを次のアイテムに置き換えることです。左にシフトするようなものです。

これで要素が破壊されることはありませんが、手放すことができると思います。

于 2012-10-31T20:38:35.350 に答える