Skip to content

Commit

Permalink
lab5
Browse files Browse the repository at this point in the history
  • Loading branch information
beltra committed Nov 30, 2021
1 parent c8694fd commit 728f3d5
Show file tree
Hide file tree
Showing 11 changed files with 726 additions and 36 deletions.
107 changes: 107 additions & 0 deletions 20211129/liste_int copy.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
#include <stdio.h>
#include <stdlib.h>
#include "liste_int.h"

listi_t *push(listi_t *head, int val) {
listi_t *newNode;

newNode = malloc(sizeof(listi_t));

if (newNode) {
newNode->num = val;
newNode->next = head;

head = newNode;
} else {
printf("push: failed allocating memory\n");
}

return head;
}

listi_t *append(listi_t *head, int val) {
listi_t *newNode;
listi_t *p;

newNode = malloc(sizeof(listi_t));

if (newNode) {
newNode->num = val;
newNode->next = NULL;

if (head == NULL) { // Se la lista è vuota
head = newNode;
} else {
// Arrivo in fondo alla lista (*p ultimo elemento)
for (p = head; p->next != NULL; p = p->next);
p->next = newNode;
}
} else {
printf("append: failed allocating memory\n");
}

return head;
}

listi_t *freeList(listi_t *head) {
listi_t *tmp;

while (head != NULL) {
tmp = head;
head = head->next;
free(tmp);
}

return head;
}

listi_t *search(listi_t *head, int val) {
listi_t *p;

/* Scorro tutta la lista */
for (p = head; p != NULL; p = p->next) {
/* Se trovo l'elemento cercato ritorno il suo indirizzo */
if (p->num == val) {
return p;
}
}

return NULL;
}

listi_t *delete(listi_t *head, int val) {
listi_t *p, *del;

/* Se l'elemento cercato è il primo */
if (head->num == val) {
del = head;
head = head->next;
free(del);

return head;
} else {
for (p = head; p->next != NULL; p = p->next) {
/* Mi fermo all'elemento precedente a quello con il valore richiesto */
if (p->next->num == val) {
/* Cambio il puntatore dell'elemento precedente a quello successivo a quello cercato */
del = p->next;
p->next = p->next->next;
/* Elimino l'elemento cercato */
free(del);

return head;
}
}
}

return head;
}

void view(listi_t *head) {
listi_t *p;

for (p = head; p != NULL; p = p->next) {
printf("%d -> ", p->num);
}
printf("|\n");
}
22 changes: 22 additions & 0 deletions 20211129/liste_int copy.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#ifndef LISTE_INT_H
#define LISTE_INT_H

typedef struct listint_s {
int num;
struct listint_s *next;
} listi_t;

listi_t *append(listi_t *head, int newval);
listi_t *push(listi_t *head, int newval);

/* Libera tutta la lista */
listi_t *freeList(listi_t *head);

listi_t *search(listi_t *head, int val);

listi_t *delete(listi_t *head, int val);

/* Stampa tutti i valori della lista */
void view(listf_t *head);

#endif
Binary file added Lab5/2021.lab5.pdf
Binary file not shown.
Binary file added Lab5/poetry
Binary file not shown.
Loading

0 comments on commit 728f3d5

Please sign in to comment.