#include #include #include #include typedef struct item{ double data; struct item *next; } ITEM,*P_ITEM; //void add(double data, P_ITEM seznam){ struct item* add(double data, struct item* seznam){ struct item *novy = (struct item*) malloc(sizeof(struct item)); novy->data=data; novy->next=seznam;// <==> (*novy).next=seznam; return novy; } void add2(double data, struct item** seznam){ struct item *novy = (struct item*) malloc(sizeof(struct item)); novy->data=data; novy->next=*seznam; (*seznam)=novy; } //void print(P_ITEM seznam){ void print(struct item *seznam){ struct item *ukaz; ukaz=seznam; while (ukaz!=NULL){ printf("%f\n",ukaz->data); ukaz=ukaz->next; } } void free_list(P_ITEM seznam){ struct item* kezruseni; while (seznam!=NULL){ kezruseni=seznam; seznam=seznam->next; free(kezruseni); } } void free_list_rek(P_ITEM seznam){ while(seznam!=NULL){ free_list_rek(seznam->next); free(seznam); } } struct item* add_na_konec(double data, struct item* seznam){ //vkladam prvni prvek if (seznam==NULL){ struct item *novy = (struct item*) malloc(sizeof(struct item)); novy->data=data; novy->next=seznam;// <==> (*novy).next=seznam; return novy; } //vkladam 2 a dalsi prvek struct item *ukaz; ukaz=seznam; while (ukaz->next!=NULL){ ukaz=ukaz->next; } //ukaz je nestaveno na poslednim prvku struct item *novy = (struct item*) malloc(sizeof(struct item)); novy->data=data; novy->next=NULL; ukaz->next=novy; return seznam; } int main(int argc, char *argv[]) { struct item *seznam1=NULL; /* seznam1=add_na_konec(1.1,seznam1); seznam1=add_na_konec(10.5,seznam1); seznam1=add_na_konec(50.5,seznam1); */ add2(1.1,&seznam1); add2(10.5,&seznam1); add2(50.5,&seznam1); print(seznam1); free_list(seznam1); return 0; }