I have this program where I want to insert and delete items in a list. I'm having trouble with my remove function. I want the user to tell me which index they want to delete in the list and then decrease the size of the list and then move the items together. For example: 333 222 111 if I delete the 2nd number then the list would look like 333 111 and the size of the list would decrease to 2.
thanks in advance!
/* 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<>.std::vector<>forloop. For each item after the target deletion index, you need to move it back one position. You have all the information, but the loop logic is incorrect.