|
|||||||
|
|
|
![]() |
|
|
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: 7262
|
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: 7262
|
non ho un compilatore pascal installato, quindi non so nemmeno se compila
comunque ho provato a dare una sistemata al tuo codiceCodice:
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: 11:30.












comunque ho provato a dare una sistemata al tuo codice








