Witam!
Mam taki problem. Próbuje napisać własną listę opartą na tablicy. Chcę zaimplementować metodę delete, która będzie usuwać dany element - ma się to odbywać poprzez przesunięcie w "lewo" (od zadanego indeksu) o jeden wszystkich elementów tablicy. Nie wiem jednak jak to zrobić. Mógłby mi ktoś z tym pomóc?
0
0
Przenoś w pętli każdy element o indeksie większym niż usuwany o jedno miejsce "w lewo". Zaczynaj od "lewej strony", aby nie nadpisywać danych.
0
elementy:
1, 2, 3, 4, 5, 6, 7, 8, 9
po usunieciu 3-ciego elementu
1, 2, (4, 5, 6, 7, 8, 9) elementy w nawiasie zostaly przesuniete w lewo o 1 miejsce
void usun(char* pierwszy, int usuwany, int rozmiar) //usuwany od 0 do rozmiar-1
{
if(pierwszy == NULL)
return;
for(int przesuwany = usuwany + 1; przesuwany < rozmiar; przesuwany ++)
{
lista[przesuwany-1] = lista[przesuwany];
lista[przesuwany] = NULL;
}
}
W pętli for() przenosimy pokolei każdy element na miejsce poprzedniego.
1 2 3 4 5
usuwamy 2 i wygląda to tak.
1 3 4 5
1 3 4 5
1 3 4 5
1 3 4 5