|
Wiki
UniCrema
Materie per semestre
Materie per anno
Materie per laurea
Help
|
|
Uni.AlSp-Liste History
Hide minor edits - Show changes to output
Changed line 1 from:
(:title Algoritmi e strutture dati - Specifiche:)
to:
(:title Algoritmi e strutture dati - Specifiche: Liste:)
Changed lines 113-114 from:
to:
Changed line 2 from:
[[Torna alla pagina di Algoritmi e strutture dati - Specifiche->Uni.Algoritmi]]
to:
[[Torna alla pagina di Algoritmi e strutture dati->Uni.Algoritmi]]
Changed line 159 from:
[[Torna alla pagina di Algoritmi e strutture dati - Specifiche->Uni.Algoritmi]]
to:
[[Torna alla pagina di Algoritmi e strutture dati->Uni.Algoritmi]]
Changed lines 13-24 from:
* '''crealiste: %color=#4169E1%() -> lista'''
* '''listavuota: %color=#4169E1%(lista) -> booleano''' * '''primolista: %color=#4169E1%(lista) -> posizione''' * '''ultimolista: %color=#4169E1%(lista) -> posizione'''
* '''succlista: %color=#4169E1%(posizione, lista) -> posizione'''
* '''predlista: %color=#4169E1%(posizione, lista) -> posizione''' * '''finelista: %color=#4169E1%(posizione, lista) -> booleano'''
* '''leggilista: %color=#4169E1%(posizione, lista) -> tipoelem'''
* '''scrivilista: %color=#4169E1%(tipoelem, posizione, lista) -> lista'''
* '''inslista: %color=#4169E1%(tipoelem, posizione, lista) -> lista'''
* '''canclista: %color=#4169E1%(posizione, lista) -> lista'''
to:
* '''crealiste: %color=#4169E1%() -> lista'''\\ ''Crea ed inizializza una lista ad un particolare valore, di solito la sequenza vuota.'' * '''listavuota: %color=#4169E1%(lista) -> booleano'''\\ ''Restituisce vero o falso a seconda che la lista sia vuota o no.'' * '''primolista: %color=#4169E1%(lista) -> posizione'''\\ ''Permette di accedere al primo elemento della lista.'' * '''ultimolista: %color=#4169E1%(lista) -> posizione'''\\ ''Permette di accedere all'ultimo elemento della lista.'' * '''succlista: %color=#4169E1%(posizione, lista) -> posizione'''\\ ''Permette di passare all'elemento successivo della lista rispetto alla posizione indicata.'' * '''predlista: %color=#4169E1%(posizione, lista) -> posizione'''\\ ''Permette di passare all'elemento precedente della lista rispetto alla posizione indicata.'' * '''finelista: %color=#4169E1%(posizione, lista) -> booleano'''\\ ''Restituisce vero o falso a seconda che la posizione sia o no l'ultima della lista.'' * '''leggilista: %color=#4169E1%(posizione, lista) -> tipoelem'''\\ ''Legge il valore dell'elemento nella posizione specificata della lista.'' * '''scrivilista: %color=#4169E1%(tipoelem, posizione, lista) -> lista'''\\ ''Cambia il valore dell'elemento nella posizione specificata della lista.'' * '''inslista: %color=#4169E1%(tipoelem, posizione, lista) -> lista'''\\ ''Inserisce un nuovo elemento nella lista.'' * '''canclista: %color=#4169E1%(posizione, lista) -> lista'''\\ ''Cancella l'elemento nella posizione specificata della lista.''
Changed line 130 from:
Trasferisce la cella putanta da ''p'' nella cella prima di quella puntata da ''q''.\\
to:
''Trasferisce la cella putanta da '''p''' nella cella prima di quella puntata da '''q'''.''\\
Changed lines 129-130 from:
* %color=#4169E1%'''sposta''': \\ Trasferisce la cella putanta da ''p'' nella cella prima di quella puntata da ''q''.
to:
* %color=#4169E1%'''sposta''':%%\\ Trasferisce la cella putanta da ''p'' nella cella prima di quella puntata da ''q''.\\
Changed line 73 from:
to:
* %color=#4169E1%'''inslista''': \\
Added line 75:
Changed line 87 from:
to:
* %color=#4169E1%'''canclista''': \\
Added line 89:
Added lines 100-146:
!!!!!Realizzazione con cursori [@ #define MAXL 100;
typedef int lista, posizione; typedef struct _cella { posizione prev, next; tipoelem elemento; } cella;
lista listalibera; cella spazio[MAXL]; @]
* %color=#4169E1%'''inizializzare''': \\ [@
void inizializza () { int i; listalibera = 0; spazio[0].next = 1; spazio[0].prev = MAXL - 1; for (i=1; i<MAXL; i++) { spazio[i].next = (i+1) % MAXL; spazio[i].prev = (i-1) % MAXL; } } @]
* %color=#4169E1%'''sposta''': \\ Trasferisce la cella putanta da ''p'' nella cella prima di quella puntata da ''q''. [@
void sposta (posizione *p, posizione *q) { posizione t; t = spazio[p].next; spazio[spazio[p].prev].next = spazio[p].next; spazio[spazio[p].next].prev = spazio[p].prev; spazio[p].prev = spazio[q].prev; spazio[spazio[q].prev].next = p; spazio[p].next = q; spazio[q].prev = p; q = p; p = t; } @]
Deleted line 73:
Deleted line 86:
Changed lines 53-54 from:
->''L' ''= a'_1_', a'_2_', ... , a'_n_', a se ''i'' = ''n'' + 1 ->''L' ''= a'_1_', a'_2_', ... , a'_n_' se ''i'' = 0
to:
-->''L' ''= a'_1_', a'_2_', ... , a'_n_', a se ''i'' = ''n'' + 1 -->''L' ''= a'_1_', a'_2_', ... , a'_n_' se ''i'' = 0
Changed lines 60-64 from:
* '''creavettore: %color=#4169E1%tipoelem v[n];''' * '''leggivettore: %color=#4169E1%v[i];''' * '''scrivivettore: %color=#4169E1%v[i] = e;'''
to:
Si condidera una lista bidirezionale circolare con sentinella
!!!!!Realizzazione con puntatori [@ typedef struct _cella { tipoelem elemento; struct _cella *next, *prev; } cella;
typedef cella posizione, lista; typedef short boolean; @]
* '''inslista''': \\ %color=#4169E1% [@ void inslista (tipoelem a, posizione *p) { posizione *q; q = malloc (sizeof(cella)); q->elemento = a; q->prev = p->prev; q->next = p; p->prev->next = q; p->prev = q; } @]
* '''canclista''': \\ %color=#4169E1% [@ void canclista (posizione **p) { posizione *q; q = *p; q->prev->next = q->next; q->next->prev = q->prev; *p = q->next; free(q); } @]
Changed lines 52-53 from:
'''Post:''' ''L' ''= a'_1_', a'_2_', ... , a'_i-1_', a, a'_i+1_', ... , a'_n_' se 1≤''i''≤''n''\\
->''L' ''= a'_1_', a'_2_', ... , a'_n_', a se ''i'' = ''n'' + 1\\
to:
'''Post:''' ''L' ''= a'_1_', a'_2_', ... , a'_i-1_', a, a'_i+1_', ... , a'_n_' se 1≤''i''≤''n'' ->''L' ''= a'_1_', a'_2_', ... , a'_n_', a se ''i'' = ''n'' + 1
Changed lines 38-58 from:
to:
* %color=#4169E1%'''predlista(''p'', ''L'') = ''q'' '''%%\\ '''Pre:''' ''L'' = a'_1_', a'_2_', ... , a'_n_' e ''p'' = ''pos'_i_' '' per un ''i'', 1≤''i''≤''n''\\ '''Post:''' ''q'' = ''pos'_i-1_' '' * %color=#4169E1%'''finelista(''p'', ''L'') = b '''%%\\ '''Pre:''' ''L'' = a'_1_', a'_2_', ... , a'_n_' e ''p'' = ''pos'_i_' '' per un ''i'', 1≤''i''≤''n+1''\\ '''Post:''' b = vero, se ''p'' = ''pos'_0_' '' o ''p'' = ''pos'_n+1_' ''; b = falso altrimenti * %color=#4169E1%'''leggilista(''p'', ''L'') = ''a'' '''%%\\ '''Pre:''' ''L'' = a'_1_', a'_2_', ... , a'_n_' e ''p'' = ''pos'_i_' '' per un ''i'', 1≤''i''≤''n''\\ '''Post:''' ''a'' = ''a'_i_' '' * %color=#4169E1%'''scrivilista(''a'', ''p'', ''L'') = ''L' '' '''%%\\ '''Pre:''' ''L'' = a'_1_', a'_2_', ... , a'_n_' e ''p'' = ''pos'_i_' '' per un ''i'', 1≤''i''≤''n''\\ '''Post:''' ''L' ''= a'_1_', a'_2_', ... , a'_i-1_', a, a'_i+1_', ... , a'_n_' * %color=#4169E1%'''inslista(''a'', ''p'', ''L'') = ''L' '' '''%%\\ '''Pre:''' ''L'' = a'_1_', a'_2_', ... , a'_n_' e ''p'' = ''pos'_i_' '' per un ''i'', 1≤''i''≤''n+1''\\ '''Post:''' ''L' ''= a'_1_', a'_2_', ... , a'_i-1_', a, a'_i+1_', ... , a'_n_' se 1≤''i''≤''n''\\ ->''L' ''= a'_1_', a'_2_', ... , a'_n_', a se ''i'' = ''n'' + 1\\ ->''L' ''= a'_1_', a'_2_', ... , a'_n_' se ''i'' = 0 * %color=#4169E1%'''canclista(''p'', ''L'') = ''L' '' '''%%\\ '''Pre:''' ''L'' = a'_1_', a'_2_', ... , a'_n_' e ''p'' = ''pos'_i_' '' per un ''i'', 1≤''i''≤''n''\\ '''Post:''' ''L' ''= a'_1_', a'_2_', ... , a'_i-1_', a'_i+1_', ... , a'_n_'
Added lines 1-46:
(:title Algoritmi e strutture dati - Specifiche:) [[Torna alla pagina di Algoritmi e strutture dati - Specifiche->Uni.Algoritmi]] ----
%titolo%''':: Algoritmi e strutture dati - Specifiche ::'''
%center%%bgcolor=#d9e4f2 font-size=11pt padding=4px padding-left=50px padding-right=50px%Liste
----
!!!Sintassi
* '''crealiste: %color=#4169E1%() -> lista''' * '''listavuota: %color=#4169E1%(lista) -> booleano''' * '''primolista: %color=#4169E1%(lista) -> posizione''' * '''ultimolista: %color=#4169E1%(lista) -> posizione''' * '''succlista: %color=#4169E1%(posizione, lista) -> posizione''' * '''predlista: %color=#4169E1%(posizione, lista) -> posizione''' * '''finelista: %color=#4169E1%(posizione, lista) -> booleano''' * '''leggilista: %color=#4169E1%(posizione, lista) -> tipoelem''' * '''scrivilista: %color=#4169E1%(tipoelem, posizione, lista) -> lista''' * '''inslista: %color=#4169E1%(tipoelem, posizione, lista) -> lista''' * '''canclista: %color=#4169E1%(posizione, lista) -> lista'''
!!!Semantica
* %color=#4169E1%'''crealista() = L' '''%%\\ '''Post:''' L' = Λ * %color=#4169E1%'''listavuota(''L'') = b'''%%\\ '''Post:''' b = vero, se L = Λ; b = falso altrimenti * %color=#4169E1%'''primolista(''L'') = ''p'' '''%%\\ '''Post:''' ''p'' = ''pos'_1_' '' * %color=#4169E1%'''ultimolista(''L'') = ''p'' '''%%\\ '''Post:''' ''p'' = ''pos'_n_' '' * %color=#4169E1%'''succlista(''p'', ''L'') = ''q'' '''%%\\ '''Pre:''' ''L'' = a'_1_', a'_2_', ... , a'_n_' e ''p'' = ''pos'_i_' '' per un ''i'', 1≤''i''≤''n''\\ '''Post:''' ''q'' = ''pos'_i+1_' ''
!!!Implementazione in C++
* '''creavettore: %color=#4169E1%tipoelem v[n];''' * '''leggivettore: %color=#4169E1%v[i];''' * '''scrivivettore: %color=#4169E1%v[i] = e;'''
---- [[Torna alla pagina di Algoritmi e strutture dati - Specifiche->Uni.Algoritmi]]
|
|