cerca
Algoritmi e strutture dati - Specifiche: Liste
modifica cronologia stampa login logout

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:
#define MAXL 100;
to:
#define MAXL 100
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:
* '''inslista''': \\
to:
* %color=#4169E1%'''inslista''': \\
Added line 75:
Changed line 87 from:
* '''canclista''': \\
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:
%color=#4169E1%
Deleted line 86:
%color=#4169E1%
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&#8804;''i''&#8804;''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&#8804;''i''&#8804;''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&#8804;''i''&#8804;''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&#8804;''i''&#8804;''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&#8804;''i''&#8804;''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&#8804;''i''&#8804;''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&#8804;''i''&#8804;''n+1''\\
'''Post:''' ''L' ''= a'_1_', a'_2_', ... , a'_i-1_', a, a'_i+1_', ... , a'_n_' se 1&#8804;''i''&#8804;''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&#8804;''i''&#8804;''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' = &#923;
* %color=#4169E1%'''listavuota(''L'') = b'''%%\\
'''Post:''' b = vero, se L = &#923;; 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&#8804;''i''&#8804;''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]]