liste chainé simple en pascal :
une question posé :
je veux ecrire le programme pascal faire pour l'enregistrement des etudiants dans une université. on spécifira les champs suivants (matricule, nom, age, departement)
la réponse :
program gestetud; type Type_liste = ^Type_enretud; Type_enretud=record Matricule: string[20]; Nom: string[30]; Age: integer; Departement:string[30]; Suivant:Type_liste; End; var L: Type_liste; nouveau,encours,tete,suivant,precedant:Type_Liste; procedure lire_Type_enretud(var enr:Type_liste) ; begin write(' matrricule :?');readln(enr^.Matricule); write(' Nom :?');readln(enr^.Nom); write(' Age :?');readln(enr^.Age); write(' Departement:?');readln(enr^.Departement); enr^.Suivant:=Nil; end; procedure afficher_Type_enretud(enr:Type_liste) ; begin writeln(' matrricule :',enr^.Matricule); writeln(' Nom : ',enr^.Nom); writeln(' Age :',enr^.Age); writeln(' Departement: ', enr^.Departement); end;
procedure creer_liste(var PListe:Type_Liste); var rep:char; begin repeat nouveau :=new(Type_liste); lire_Type_enretud (nouveau); if (PListe=nil) {si la liste est vite alors le nouveau c'est la tete de la liste // et c'est l'encours qui est la queu de liste aussi} then begin Pliste:=nouveau; encours:=nouveau; end else begin encours^.Suivant:=nouveau; encours:=encours^.suivant;{en peut modifier par encours :=nouveau mais c'est plus claire avec suivant comme le tableau i:=i+1} end; write('autres ajout??? ');readln(rep); until(upcase(rep)='N'); end; procedure afficher_liste(PListe:Type_Liste); begin encours:=pListe; while(encours<>nil) do begin afficher_type_enretud(encours); encours:=encours^.Suivant; end; end; procedure liberer_liste(var PListe:Type_Liste); begin encours:=pListe; while(encours<>nil) do begin precedant:=encours; encours:=encours^.Suivant; dispose(precedant); end; end;
begin L:=nil; creer_liste(L); afficher_liste(L); liberer_liste(L); readln; end.
une question posé :
je veux ecrire le programme pascal faire pour l'enregistrement des etudiants dans une université. on spécifira les champs suivants (matricule, nom, age, departement)
la réponse :
program gestetud; type Type_liste = ^Type_enretud; Type_enretud=record Matricule: string[20]; Nom: string[30]; Age: integer; Departement:string[30]; Suivant:Type_liste; End; var L: Type_liste; nouveau,encours,tete,suivant,precedant:Type_Liste; procedure lire_Type_enretud(var enr:Type_liste) ; begin write(' matrricule :?');readln(enr^.Matricule); write(' Nom :?');readln(enr^.Nom); write(' Age :?');readln(enr^.Age); write(' Departement:?');readln(enr^.Departement); enr^.Suivant:=Nil; end; procedure afficher_Type_enretud(enr:Type_liste) ; begin writeln(' matrricule :',enr^.Matricule); writeln(' Nom : ',enr^.Nom); writeln(' Age :',enr^.Age); writeln(' Departement: ', enr^.Departement); end;
procedure creer_liste(var PListe:Type_Liste); var rep:char; begin repeat nouveau :=new(Type_liste); lire_Type_enretud (nouveau); if (PListe=nil) {si la liste est vite alors le nouveau c'est la tete de la liste // et c'est l'encours qui est la queu de liste aussi} then begin Pliste:=nouveau; encours:=nouveau; end else begin encours^.Suivant:=nouveau; encours:=encours^.suivant;{en peut modifier par encours :=nouveau mais c'est plus claire avec suivant comme le tableau i:=i+1} end; write('autres ajout??? ');readln(rep); until(upcase(rep)='N'); end; procedure afficher_liste(PListe:Type_Liste); begin encours:=pListe; while(encours<>nil) do begin afficher_type_enretud(encours); encours:=encours^.Suivant; end; end; procedure liberer_liste(var PListe:Type_Liste); begin encours:=pListe; while(encours<>nil) do begin precedant:=encours; encours:=encours^.Suivant; dispose(precedant); end; end;
begin L:=nil; creer_liste(L); afficher_liste(L); liberer_liste(L); readln; end.
Aucun commentaire:
Enregistrer un commentaire