[Liste] Listes Chainées

La liste est une structure de donnée dynamique, elle est utilisée principalement pour les calculs symboliques, on utilise les listes pur représenter un ensemble d’éléments chaque élément est contenu dans une cellule, celle contient au mois de l’élément d’adress de la cellule suivante, appelé aussi pointeur

Déclaration:

type
	liste = ^cellule;
	cellule = enregistrement
		contenu = entier;	// Ou n'import d'autre type
		suivant = liste;

var
	a: liste;

Liste vide:

Fonction listeVide(a: liste): bool;
	Si(a == nil) Alors
		Renvoyer Vrai;
Fin,

Ajouter un élément en tete:

Procédre ajoutTete(var a: liste, x: entier);
	new(u);	// Créer une cellule vide.
	u^contenu := x;
	u^suivant := a;
	a := u;
Fin,

Insérer un élément au queue:

Procédre ajoutQueue(var a: liste, x: entier);
var
	b: liste;
Debut
	b := a;
	TantQue(b^suivant != nil) Faire b := b^suivant;
	new(u);
	u^contenu := x;
	u^suivant := nil;
	b^suivant := u;
Fin,

Ou bien une solution récursive:

Procédure ajoutQueue(var a: liste, x: entier);
Var
	u, b: liste;
Debut
	Si(a == nil) Alors
		new(u);
		u^contenu := x;
		u^suivant := nil;
		a := u;
	Sinon Si(a^suivant == nil) Alors
		new(u);
		u^contenu := x;
		u^suivant := nil;
		a^suivant := u;
	Sinon
		b := a^suivant;
		ajoutQueue(b, x);
		a^suivant := b;
	FinSi
Fin,

// Ou bien:

Fontion ajoutQueue(var a: liste, x: entier): liste;
Var
	u: liste;
Debut
	Si(a == nil) Alors
		new(u);
		u^contenu := x;
		u^suivant := nil;
		Renvoyer u;
	Sinon
		a^suivant := ajoutQueue(a^suivant, x);
		Renvoyer a;
	FinSi
Fin,

Supprimer un élément en tete:

Procédure suppTete(var a:liste);
	q := a;
	a := a^suivant;	// Supp. logique
	dispose(q);		// Supp. physique
Fin,

Supprimer un élément au queue:

Procédre suppQueue(var a: liste);
var
	b: liste;
Debut
	b := a;
	TantQue(b^suivant != nil) Faire b := b^suivant;
	b := nil;
	dispose(b);
Fin,

Ou bien une soution récursive:

Procédure suppQueue(var a: liste);
Debut
	Si(a == nil) Alors
		Ecrire("Liste Vide...");
	Sinon Si(a^suivant == nil) Alors
		dispose(a);
		a := nil;
	Sinon
		b := a^suivant;
		suppQueue(b);
		a^suivant := b;
	FinSi
Fin,

One comment

  1. Nour Eliman · · Répondre

    en c++ comme ?

Laisser des commentaires:

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :