#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
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;
}