Ahoj, potřeboval bych pomoc s programem na mazání ze spojového seznamu. Přesněji potřebuji:
•Argumentem bude pořadí položky, která má být odstraněna (počítáno od 0), funkce vrátí adresu odstraněné položky.
•Pokud pořadí neodpovídá žádné položce (seznam jich obsahuje méně), ponechá seznam beze změny a vrátí NULL.
Tady mám zatím jen obyč program na mazání ze seznamu(nevim jestli je správně):
#include "v_stat.h"
static ELEMENT *head;
void vymaz_prvek ( ELEMENT *goner )
{
ELEMENT *p;
if (goner == head)
head = goner->next;
else
{
for (p = head; (p != NULL) && (p->next != goner);
p = p->next);
if (p == NULL)
{
printf("vymaz_prvek: nemohu najit prvek, ktery mam vymazat, v seznamu\n");
return;
}
p->next = p->next->next;
}
free (goner);
}
Fórum › C / C++
Mazání ze spojového seznamu
Rozšíření programu o další fce jako např. vložení záznamu a vyhledání + smazání...bohužel stále nefunguje, prosím o radu!
Začnu jedním velmi důležitým doporučením. Používej odsazování, zarovnání do bloku apod. Nejde jen o čitelnost programu, ale hlavně o to, že se v něm neztratíš.
Vezmeme to postupně, pridat_na_seznam je snad dobře. I ta funkce na výpis vypadá dobře.
Ve funkci vloz_do bych řekl, že je chyba v části za vkládacím cyklem. Podle mě by tam neměla být ta podmínka if (idx == index), ale vkládat na konec by se mělo vždy, když to až sem dojde.
Ve funkci hledej_smudlo jsou dvouhvězdičkové pointery asi zbytečné ...
A funkce mazání ... najdeš položku danou indexem (třeba n), musíš znát předchozí (třeba r) a na vyvázání n ze seznamu ti stačí udělat r->next = n->next. Mezním případem je pouze první položka (a tak trochu i neexistující položka).
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Výpis spojového seznamu — založil MaxDJs
Optimalizace spojového seznamu — založil Wimby
Bezparametrický destruktor spojového seznamu — založil ondrej39
Přidání seznamů v seznamu do 2.seznamu — založil Ahoj3
Práce seznamu — založil pouk
Moderátoři diskuze