Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- /* nella funzione chiamante la lista L viene dichiarata come segue: struct node *L;
- * la funzione da realizzare invece viene invocata in questa maniera: int *ptr = Vetmaggiori(L);
- * ptr rappresenta il generico nome che si può dare ad un puntatore.
- */
- int num_rows(struct node *list){
- struct node *cur = list->next; // list punta il nodo sentinella
- int row = 0;
- while(cur){
- row = row > cur->row? row : cur->row;
- cur = cur->next;
- }
- return ++row;
- }
- int *maxrows(struct node * const list){
- int row = num_rows(list); // mi restituisce il numero di righe della lista
- int *v = malloc(sizeof(*v) * row)
- if(!v){
- return NULL;
- }
- int check_rows[row];
- //inizializzo massimi e il vettore di controllo riga
- for(int i = 0; i!=row; i++){
- v[i] = 0;
- check_rows[i] = 0;
- }
- struct node *cur = list->next; // list punta il nodo sentinella
- struct node *ptr = cur;
- while(cur){
- if(!check_rows[cur->row]){
- while(ptr){
- if(ptr->row == cur->row){
- v[ptr->row] = ptr->elem > v[ptr->row]? ptr->elem : v[ptr->row];
- }
- ptr = ptr->next;
- }
- check_rows[cur->row] = 1;
- }
- cur = cur->next;
- ptr = list->next; // perchè list punta alla sentinella e io voglio il primo elementoi
- }
- return v;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement