Academic Year: 2022-2023 Class: Programmazione Calcolatori (Class) Created: March 12, 2023 Tag: C MOC Type:Lecture


Info utili precedenti: L8 Programmazione dei Calcolatori (C Linked Lists)

node *search(linked_list L, int pos){
	node *p = L.a;
	int i = 0;
	
	while( p != NULL && i < pos ){ // se p è NULL, la lista è finita
		p = p->next;
		i++;
	}
 
return p;
}

Costo: O(n), lineare dipende dall’input pos

inserire nuovo elemento in una lista frammentata

  • cambiare puntatore next con posizione del nuovo elemento successivo
  • creare nuovo elemento con head e nest
  • cambiare head dell’ elemento d’eccessivo al nuovo elemento inserito oss: questo meccanismo funziona per l inserimento di un nuovo elemento in tutte le posizioni tranne che nella prima
linked_list insert(linked_list L, int pos, float e){
	
	if(pos > 0 && pos <= L.size){
		node *p = malloc(sizeof(node));
		node *q = search(L, pos-1);
		
		p->data = e;
		p->next = q->next;
		q->next = p;
		L.size++;
		
	} else if(pos == 0) {
		L = in0(L, e);
	}
	return L
}

Costo: O(n), dipende dalla funzione search (lineare) il resto ha tutto costo costante

inserimento elemento in posizione 0

linked_list in0(linked_list L, float e){
	node *p = malloc(sizeof(node));
	
	p->data = e;
	p->next = NULL;
	L.a = p;
	L.size++;
	
	return L;
// crea nodo con valore e e lo inserisce in testa alla lista
}

Cancellazione di un elemnto

Cancella l’elemento in una specifica posizione di una lista e restituisce la nuova lista

 
 

Cancellazione di elemento iniziale

 

Cancellazione di una lista con elemento stringa

 

Int main input

  • l’int main può prendere come input … es: