Z Ćwiczenia 19 04 2008


Na dzisiejszych zajęciach zajmiemy się usuwaniem elementów z pojedynczych list jak również usuwaniem całych list. I na początek takie proste zadanie. Popatrzmy, jak zaimplementować pseudokod programu, który by usunęła całą listę:

struct node *usunliste (struct node *l){

struct node *pom;

while (l !=NULL){

pom=l;

l=l->next;

free (pom);

}

}

I kolejne zadanie. Na ostatnich lebolatoriach implementowaliśmy funkcję dodającą na początek listy jakiś element. Dziś wykonamy zadanie, które doda jakiś element, ale na koniec listy, czyli jakby dołączy go na koniec. Popatrzmy, jak by wyglądała implementacja takiej struuktury:

struct node *dodaj (struct node *l, int w){

struct node *e, *pocz=l;

struct node atrapa; // pierwszy element

atrapa.next=l; // podpiecie do listy

e=(struct node *) malloc (sizeof )struct node));

if (e=NULL) printf ("error");

else {

l=&atrapa; // wskazanie atrapy

e->val=w;

e->next=NULL;

if (l==NULL) // mozna usunac

pocz=e; // mozna usunac

else { // mozna usunac

while (l -> next != NULL)

l=l->next;

}

l->next=e;

}

return pocz;

return atrapa.next; // wskazanie poczatku

}

Ale istnieje jeszcze łatwiejsze rozwiązanie. A mianowicie:

struct node * dodaj (struct node * l, int w){

struct node *e, *pocz=l, *a;

struct node atrapa; // pierwszy element

a=&atrapa

a -> next=l; // podpiecie do listy

e= (struct node *) malloc (sizeof )struct node));

if (e=NULL) printf ("error");

else {

l=a; // wskazanie atrapy

e->val=w;

e->next=NULL;

if (l==NULL) // mozna usunac

pocz=e; // mozna usunac

else { // mozna usunac

while (l -> next != NULL)

l=l->next;

}

l->next=e;

}

return a -> next; // wskazanie poczatku

}

No i ostatnie z zadań. Ma ono na celu usunięcie elementu z listy z atrapą. Oto pseudokod:

struct node *usun (struct node *l, int w, int a){

struct node *e, *poprz;

struct atrapa; // atrapa

a=&atrapa; // wskazanie

if (l != NULL){ // w przypadku kiedy nie ma nic

if (l -> val == w){ // jesli pierwszy element jest 1

e=l;

l=l -> next;

free (e) // usun

}

else{

poprz=l;

poprz=a; // wskaz atrape

e=poprz.next;

while (e != NULL && e->val !=w){

poprz=e;

e=e -> next;

}

if (e !=NULL){

poprz ->next = e -> next;

free (e);

}

return l;

return a-> next;

}

}

}



Wyszukiwarka

Podobne podstrony:
Z Ćwiczenia 19.04.2008, Zajęcia, II semestr 2008, Algorytmy i struktury danych
Z Ćwiczenia 19 04 2008 2
Z Ćwiczenia 19 04 2008 3
cwiczenia 7 25.04.2008, Prawoznawstwo, Materialy e-learning, mgr M. Zalewska
cwiczenia 15 1.04.2008, cwiczenia - dr skladowski
Z Wykład 19.04.2008, Zajęcia, II semestr 2008, Analiza matematyczna
KINEZYTERAPIA ĆWICZENIA 23.04.2008- CHÓD O KULACH I PNF(1), FIZJOTERAPIA, kinezyterapia
02B Z dziećmi o śmierci 19 04-2008, KSW Kędzierzyn spotkania, Spotkania i sprawozadnia K-K KSW
KINEZYTERAPIA ĆWICZENIA 23.04.2008- CHÓD O KULACH(1), Kineza
Z Ćwiczenia 20.04.2008, Zajęcia, II semestr 2008, Teoria informacji i kodowania
cwiczenia 16 4.04.2008, cwiczenia - dr skladowski
wyklad 19 9.04.2008, wyklady - dr krawczyk
Z Ćwiczenia 26.04.2008, Zajęcia, II semestr 2008, Analiza matematyczna
ćwiczenia rachunek prawdopodobieństwa i statystyka, Z Ćwiczenia 06.04.2008
Z Ćwiczenia 26.04.2008, Programowanie
Z Ćwiczenia 05.04.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Mikrobiologia19 notatki z ćwiczeń 19.04, Mikrobiologia
Z Ćwiczenia 06.04.2008, Zajęcia, II semestr 2008, Matematyka dyskretna i logika
cwiczenia 6 11.04.2008, Prawoznawstwo, Materialy e-learning, mgr M. Zalewska

więcej podobnych podstron