#include <stdio.h>
typedef int element_type;
typedef struct Cell{
element_type e;
struct Cell *next;
} Cell,*List;
Cell *End(List L){
Cell *q = L;
while (q->next != NULL){
q = q->next;
}
return q;
}
void Insert(Cell *p, element_type x){
//Create new Cell
Cell *temp = (Cell*) malloc(sizeof(Cell));
if (temp == NULL){
printf("Memory Allocation Failed");
}
else{
temp->e = x;
temp->next = p->next;
p->next = temp;
}
}
element_type Retrieve(Cell *p){
return p->e;
}
int main(){
//Initialize the List;
List L = malloc(sizeof(Cell));
L->e = NULL;
L->next = NULL;
element_type x = 10;
Insert(L,x);
printf("Just retrievd the item %d\n",Retrieve(L));
return 1;
}
List_pointer.c: In function ‘Insert’:
List_pointer.c:19:24: warning: incompatible implicit declaration of built-in function ‘malloc’ [enabled by default]
List_pointer.c: In function ‘main’:
List_pointer.c:35:12: warning: incompatible implicit declaration of built-in function ‘malloc’ [enabled by default]
List_pointer.c:36:8: warning: assignment makes integer from pointer without a cast [enabled by default]
Thanks for all your helps, and I for the part with struct now. However, when I tried to use malloc, I got the warnings again on incompatible declaration. I thought malloc returns a generic pointer to NULL, and hence there shouldn't be any issue with casting? I just not sure what I did wrong here.
Also for those of you who wonders why I would implement such a weird interface, I was following the interfaces provided by the book "Data Structure and Algorithm" by Aho. The sample codes were given in Pascal, pretty old style. Although I think there are some merits to learn this super old style way of designing data structure.
Update:
I just forgot to include the stdlib.h header for malloc! Please refer to this link incompatible implicit declaration of built-in function ‘malloc’