|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jun 2006
Messaggi: 117
|
[PASCAL] Gestione Liste
Ragazzi io ho capito poco quanto niente sul funzionamento delle liste (anche un pò sulla logica non mi è chiara una parte dell'argomento)...
Comunque a fatica riesco a creare una procedura di inserimento e una di visualizzazione dei dati immessi... Ma se dovessi fare in modo di cancellare un dato e collegare il dato precedente a quello eliminato al dato successivo a quello eliminato non so proprio farlo...come devo fare,o meglio come si fa? So che chiedo tanto ma vorrei una mano per favore... Qui allego un programma con procedura di inserimento dati e estrazione |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7258
|
guarda se questo codice ti può aiutare
http://snippets.dzone.com/posts/show/3253 |
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Jun 2006
Messaggi: 117
|
Quote:
|
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7258
|
non ho un compilatore pascal installato, quindi non so nemmeno se compila
![]() Codice:
Program SJF; uses crt; nodo = record nomejob:string[19]; tesec:real; succ:punt; end; type punt = ^nodo; var testa:punt; Procedure inserisciLavoro(nome: string[19], tempo: real); var el, cur, prec: punt; begin new(el); el^.nomejob := nome; el^.tesec := tempo; cur = testa; while (cur<>nil) and (cur^.tesec<tempo) do begin prec:=cur; cur:=cur^.succ; end; el^.succ:=cur; if cur=testa then begin testa:=el; end else begin prec^.succ:=el; end; end; Procedure rimuoviLavoro(nome: string[19]); var cur, prec: punt; begin cur = testa; if (cur^.nomejob = nome) begin testa = testa^.succ; dispose(cur); end; else begin prec:=cur; cur:=cur^.succ; while (cur<>nil) do begin if (cur^.nomejob = nome) begin prec^.succ = cur^.succ; dispose(cur); end; prec:=cur; cur:=cur^.succ; end; end end; Procedure inserisci; var tempo:real; nome:string[19]; Begin Writeln ('Inserisci il nome del lavoro '); readln (nome); Writeln (' Inserisci il tempo necessario all esecuzione del lavoro ',nome); readln (tempo); clrscr; InserisciLavoro(nome, tempo); end; Procedure rimuovi; var nome:string[19]; Begin Writeln ('Inserisci il nome del lavoro '); readln (nome); clrscr; RimuoviLavoro(nome); end; Procedure visualizza; var risp:char; Begin clrscr; if testa=nil then Begin writeln ('La lista e' vuota!!!!!!'); readln; clrscr; end else begin while testa<>nil do begin writeln(testa^.nomejob); testa:=testa^.succ; end; readln; clrscr; end; end; Procedure elenco; var risp:char; Begin repeat clrscr; Writeln ('Cosa vuoi fare? '); Writeln ('A: Inserisci un lavoro'); Writeln ('B: Visualizza il lavoro in ordine di esecuzione'); Writeln ('C: Elimina un lavoro'); readln(risp); case risp of 'a' : inserisci; 'b' : visualizza; 'c' : rimuovi; end; Writeln ('Vuoi svolgere un altra operazione? s/n'); readln (risp); clrscr; until (risp='n') or (risp='N'); end; Begin elenco; End. ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:26.