gpt4 book ai didi

c++ - 从 C++ 中的列表中删除项目

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:53:33 25 4
gpt4 key购买 nike

我有这个程序,我想在其中插入和删除列表中的项目。我的删除功能有问题。我希望用户告诉我他们想在列表中删除哪个索引,然后减小列表的大小,然后将项目一起移动。例如:333 222 111如果我删除第二个数字,那么列表看起来像 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;
}

最佳答案

就像其他人说的,你应该尝试使用STL。但是使用你到目前为止的代码。您应该将您的 for 更改为这样的内容:

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

}

这样做的目的是,从删除的项目开始,将每一项替换为后面的一项。这就像向左移动。

这不会破坏任何元素,但我猜我们可以放手。

关于c++ - 从 C++ 中的列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13167011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com