mazanie z linearneho spajaneho zoznamu (C)

Programovacie jazyky, rady, poradňa...
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

mazanie z linearneho spajaneho zoznamu (C)

Príspevok od používateľa beluský »

Dobrý,
pracujem s lineárnym spájaným zoznamom štruktúr tvaru.

Kód: Vybrať všetko

typedef struct kniha
{	
	char nazov[100];

	struct kniha *dalsia;

} KNIHA;
Načítam retacez a ak sa ten reťazec vyskytuje v názve niektorej knihy, tak knihu zmaže... nefunguje mi to však pre knihu na prvom mieste... viete mi poradiť prečo to nejde?

p.s. neberie sa ohľad na veľké a malé písmená a pre úplnosť sem dám aj funkciu spravmale

Kód: Vybrať všetko

void spravmale(char *nazov, char *str)
{
	int i;

	for (i = 0; i < strlen(str); i++)
		*(nazov + i) = tolower(*(str+ i));

	*(nazov + i) = '\0';
}

Kód: Vybrať všetko

.
.
.
	scanf("%s", text);	// nacita text, kt. sa bude mazat
	spravmale(text, text);	// upravi nacitany text na male pismena
			
	for (pred = aktualna = prva; aktualna != NULL; pred = aktualna, aktualna = aktualna->dalsia)
	{
		spravmale(nazov, aktualna->nazov);

		if (strstr(nazov, text) != NULL) // hlada podretazec TEXT v retazci NAZOV
		{

			/*	NEVIE ZMAZAT PRVU POLOZKU
				aktualna = aktualna->dalsia;
				prva->dalsia = NULL;
				free((void *) prva);
				prva = aktualna;          */

		
				pred->dalsia = aktualna->dalsia;
				free((void *) aktualna);
				aktualna = pred;

			pocet++;
		}
	}
.
.
.
ďakujem za odpovede...
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

nikto nič?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Nechápem, prečo v prvom kroku nastavuješ pred a aktuálna na tu istú hodnotu. V pred nemá byť predchádzajúci element? Nebolo by rozumnejšie, keby si nastavil pred na NULL? Potom by si mohol otestovať, či je pred NULL a ak je, znamenalo by to, že mažeš prvý element (v takom prípade by si do prva dal aktualne->dalsia a vymazal by si element aktualne).
Inak to máš na môj vkus dosť neprehľadné, takže asi by som to ani nevedel opraviť (rýchlejšie by som to urobil od začiatku).
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

už to ide vďaka
Napísať odpoveď