我有一个程序,想要在列表中插入和删除项目。我的删除函数出了问题。我希望用户告诉我他们想要在列表中删除哪个索引,然后减小列表的大小并将项目移动在一起。
例如: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;
}
std::list<>
。 - Robᵩstd::vector<>
- Benjamin Lindleyfor
循环。对于目标删除索引后的每个项目,你需要将其向后移动一个位置。你拥有所有信息,但循环逻辑是不正确的。 - Chad