Struktury danych – listy
wat-wdp@wp.pl
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
lista NULL
Struktury danych - listy
Wstawianie elementów do
listy
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
lista NULL
l
lista NULL
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void dolacz_do_listy (Tlista* l, Telem e) {
Tlista pom;
pom = (Tlista)malloc(sizeof(Telem_listy));
(*pom).elem = e;
(*pom).nast_elem = *l;
*l = pom;
}
pom
l
nast_elem
elem
lista NULL
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void dolacz_do_listy (Tlista* l, Telem e) {
Tlista pom;
pom = (Tlista)malloc(sizeof(Telem_listy));
(*pom).elem = e;
(*pom).nast_elem = *l;
*l = pom;
}
pom
l
nast_elem
elem 7
lista NULL
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void dolacz_do_listy (Tlista* l, Telem e) {
Tlista pom;
pom = (Tlista)malloc(sizeof(Telem_listy));
(*pom).elem = e;
(*pom).nast_elem = *l;
*l = pom;
}
pom
l
nast_elem NULL
elem 7
lista NULL
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void dolacz_do_listy (Tlista* l, Telem e) {
Tlista pom;
pom = (Tlista)malloc(sizeof(Telem_listy));
(*pom).elem = e;
(*pom).nast_elem = *l;
*l = pom;
}
pom
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void dolacz_do_listy (Tlista* l, Telem e) {
Tlista pom;
pom = (Tlista)malloc(sizeof(Telem_listy));
(*pom).elem = e;
(*pom).nast_elem = *l;
*l = pom;
}
pom
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void dolacz_do_listy (Tlista* l, Telem e) {
Tlista pom;
pom = (Tlista)malloc(sizeof(Telem_listy));
(*pom).elem = e;
(*pom).nast_elem = *l;
*l = pom;
}
pom
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void dolacz_do_listy (Tlista* l, Telem e) {
Tlista pom;
pom = (Tlista)malloc(sizeof(Telem_listy));
(*pom).elem = e;
(*pom).nast_elem = *l;
*l = pom;
}
nast_elem
elem
pom
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void dolacz_do_listy (Tlista* l, Telem e) {
Tlista pom;
pom = (Tlista)malloc(sizeof(Telem_listy));
(*pom).elem = e;
(*pom).nast_elem = *l;
*l = pom;
}
nast_elem
elem 5
pom
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void dolacz_do_listy (Tlista* l, Telem e) {
Tlista pom;
pom = (Tlista)malloc(sizeof(Telem_listy));
(*pom).elem = e;
(*pom).nast_elem = *l;
*l = pom;
}
nast_elem
elem 5
pom
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void dolacz_do_listy (Tlista* l, Telem e) {
Tlista pom;
pom = (Tlista)malloc(sizeof(Telem_listy));
(*pom).elem = e;
(*pom).nast_elem = *l;
*l = pom;
}
nast_elem
elem 5
pom
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
Struktury danych - listy
Przeglądanie listy – wypisywanie
elementów
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
8
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
8 5
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
8 5
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
8 5
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
8 5 7
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
8 5 7
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
void wypisz_liste (Tlista l) {
if (l != NULL) {
wypisz_elem ((*l).elem);
wypisz_liste ((*l).nast_elem);
}
}
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
Struktury danych - listy
Przeglądanie listy – usuwanie
elementów
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void usun_liste (Tlista* l) {
if (*l != NULL) {
usun_liste (&(**l).nast_elem);
free(*l);
*l = NULL;
}
}
l
nast_elem NULL
elem 7
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem
elem 5
nast_elem
elem 8
void usun_liste (Tlista* l) {
if (*l != NULL) {
usun_liste (&(**l).nast_elem);
free(*l);
*l = NULL;
}
}
&
(**l).nast_elem
adres pola nast_elem
w strukturze
l
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
nast_elem NULL
elem 8
void usun_liste (Tlista* l) {
if (*l != NULL) {
usun_liste (&(**l).nast_elem);
free(*l);
*l = NULL;
}
}
l
lista
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void usun_liste (Tlista* l) {
if (*l != NULL) {
usun_liste (&(**l).nast_elem);
free(*l);
*l = NULL;
}
}
l
lista NULL
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void usun_liste (Tlista* l) {
if (*l != NULL) {
usun_liste (&(**l).nast_elem);
free(*l);
*l = NULL;
}
}
lista NULL
#include "lista.h"
main() {
Tlista lista = NULL;
dolacz_do_listy(&lista,7);
dolacz_do_listy(&lista,5);
dolacz_do_listy(&lista,8);
wypisz_liste(lista);
usun_liste(&lista);
}
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
Struktury danych - listy
Pakiet przykładowych operacji
/* lista.h */
#if !defined(__lista_H)
#define __lista_H
typedef int Telem;
typedef struct Telem_listy {
Telem_listy* nast_elem;
Telem elem;
};
typedef Telem_listy* Tlista;
void dolacz_do_listy (Tlista* l, Telem e);
void dolacz_do_listy_ros (Tlista* l, Telem e);
void usun_liste (Tlista* l);
int usun_z_listy (Tlista* l, Telem e);
void wypisz_liste (Tlista l);
void wypisz_liste_od_konca (Tlista l);
void wypisz_liste_iter (Tlista l);
void wypisz_elem (Telem e);
#endif /* __lista_H */