informaticage

Template liste concatenate

Jul 31st, 2021
727
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct _mark {
  5.   unsigned int mark;
  6.   struct _mark* next;
  7. } Mark;
  8.  
  9. Mark* append(Mark* head, unsigned int mark);
  10. void print_list(Mark* head);
  11. void free_list(Mark* head);
  12.  
  13. int main() {
  14.   printf("Linked List\n");
  15.  
  16.   // Inizializziamo una lista vuota
  17.   // struct _mark *marks_list = NULL;
  18.   Mark* marks_list = NULL;
  19.  
  20.   marks_list = append(marks_list, 11);
  21.   marks_list = append(marks_list, 12);
  22.   marks_list = append(marks_list, 32);
  23.   marks_list = append(marks_list, 2);
  24.   marks_list = append(marks_list, 1);
  25.   marks_list = append(marks_list, 24);
  26.   marks_list = append(marks_list, 21);
  27.   marks_list = append(marks_list, 31);
  28.  
  29.   print_list(marks_list);
  30.  
  31.   free_list(marks_list);
  32.   return 0;
  33. }
  34.  
  35. void print_list(Mark* head) {
  36.   // Dalla testa alla coda, stampo tutti i mark e ogni volta passo al next
  37.   // finchè non diventa NULL
  38. }
  39.  
  40. Mark* append(Mark* head, unsigned int mark) {
  41.   // Se la lista è inizialmente vuota
  42.   // Creo una nuova testa
  43.  
  44.   // Scorre finchè c'è un next
  45.   // Scorro verso il next
  46.   // Quando il next è NULL lo alloco
  47. }
  48.  
  49.  
  50. // Esempi di funzionamento della memoria
  51.  
  52. // *a = 0x134;
  53. // *a = fun() = 0x134
  54.  
  55. // MEMORIA[0x134]  = { mark: 29, next: 0x700 };
  56. // MEMORIA[0x700]  = { mark: 22, next: 0x800 };
  57. // MEMORIA[0x800] = { mark: 11, next null };
  58.  
  59. // fun(a, b, c) {
  60. //   *it = a;
  61. //   finche( NULL != null) {
  62. //     it = it -> NULL;
  63. //   }
  64. //   it -> next = { mark: 11, next null;}
  65. //   return 0x134;
  66. // }
  67.  
RAW Paste Data