Strona 1 z 1

[C] Usuwanie elementów z listy

: 1 cze 2012, o 18:25
autor: Nesquik
Mam tu program który tworzy listę. Na zadanie mam napisac dwie funkcje jedna ma usuwać element pierwszy,a druga ostatni. Działanie programu rozumiem,dlatego proszę o jakieś wskazówki jak to zrobić.

Próbowałam napisać funkcje która usunie ostatni element,mam coś takiego

Kod: Zaznacz cały

void usun_k()
{
struct lista*temp,*temp2;
temp=glowa;
while(temp->nast!=NULL)
temp=temp->nast;
temp->nast=temp2;
free(temp2)
}

ale element ostatni czyli 12 nadal jest,takze coś jest nie tak.

Kod: Zaznacz cały

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>


struct lista
{
int dane;
struct lista*nast;  //nast -następnik,wsakźnik pokazuje tylko na strukture
};
struct lista*glowa;

void wstaw_p(int x)
{
struct lista*temp;
temp=(struct lista*)malloc(sizeof(struct lista));
temp->dane=x;
temp->nast=glowa->nast;
glowa->nast=temp;
}


void wstaw_k(int x)
{
struct lista*temp,*temp2;
temp2=(struct lista*)malloc(sizeof(struct lista));
temp2->dane=x;
temp2->nast=NULL;
temp=glowa;
while(temp->nast!=NULL)
temp=temp->nast;

temp->nast=temp2;
 }

void wypisz()
{
struct lista*temp;
temp=glowa->nast;
while(temp!=NULL)
 {
  printf(" %d ",temp->dane);
  temp=temp->nast;
 }
 }


main()
{
glowa=(struct lista*)malloc(sizeof(struct lista));
glowa->dane=-1;
glowa->nast=NULL;
wstaw_p(10);
wstaw_p(7);
wstaw_p(13);
wstaw_p(5);
wstaw_k(12);
wypisz();

getch();
return;
}

[C] Usuwanie elementów z listy

: 2 cze 2012, o 10:06
autor: zhtk
W tej funkcji usuwany jest zawsze obiekt pod adresem NULL... Wynika to z faktu, że zmienna temp przesuwa się po liście, dochodzi do ostatniego elementu, wskazuje na niego, a do temp2 ładujesz następnik czyli NULL. Następnie jest on usuwany...