Advertisement
informaticage

LAE 19 Oral F2

Jul 9th, 2019 (edited)
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.16 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3.  
  4. typedef struct SamList{
  5.     int id;
  6.     float height;
  7.  
  8.     struct SamList* next;
  9. } SamList;
  10.  
  11. int main ( void )
  12. {
  13.     /// S1 -> S2 -> S3 -> NULL
  14.     SamList s3 = { 3, 176.0, NULL };
  15.     SamList s2 = { 2, 174.0, &s3 };
  16.     SamList s1 = { 1, 172.0, &s2 };
  17.  
  18.  
  19.     /// head -> S1 -> ...
  20.     SamList *head = &s1;
  21.     SamList *pre = head;
  22.  
  23.     /// NewItem = { lettura1, lettura2, null }
  24.     SamList newItem;
  25.     printf ( "Inserire id e altezza: " );
  26.     scanf ( "%d%f", &newItem.id, &newItem.height );
  27.  
  28.     while ( true ) {
  29.         /// Se la lista non è vuota
  30.         if ( head != NULL ) {
  31.  
  32.             /// Se il nuovo nodo è più grande di quello corrente
  33.             if ( newItem.height > head->height ) {
  34.                 /// Scorro
  35.                 pre = head;
  36.                 head = head->next;
  37.                 continue;
  38.             }
  39.         }
  40.         break;
  41.     }
  42.  
  43.     /// Torno indietro di un nodo
  44.     head = pre;
  45.  
  46.     /// head punta all'elemento precendete a quello da inserire
  47.     /// PRECEDENTE -> NUOVO -> SUCCESSIVO
  48.     newItem.next = head->next;
  49.     head->next = &newItem;
  50.  
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement