One problem you had is you were re-using struct in declaring your struct pointer after you had created a typedef, struct list *start;. Also the struct and typedef cannot have the same name. You get this:
cc  -Wall test.c -o test
test.c: In function ‘main’:
test.c:13: error: ‘list_t’ undeclared (first use in this function)
test.c:13: error: (Each undeclared identifier is reported only once
test.c:13: error: for each function it appears in.)
test.c:13: error: ‘start’ undeclared (first use in this function)
test.c:13: error: ‘cur’ undeclared (first use in this function)
test.c:13: warning: left-hand operand of comma expression has no effect
test.c:16: error: expected expression before ‘)’ token
You can choose to use struct list everywhere and skip making using typedef. Use of typedef simplifies how your code reads as noted here: http://en.wikipedia.org/wiki/Struct_%28C_programming_language%29#typedef
I've rewritten what you have just so I could compile it and understand it a little better, and so I could put some data into one node. I remember the whole struct typedef concept taking a little time to sink in, when I was learning C. So, don't give up.
#include <stdio.h>
#include <stdlib.h>
struct list {
    int data;
    struct list *next;
};
typedef struct list list_t;
int main()
{
    list_t *start, *cur;
    int i;
    start = (list_t *) malloc(sizeof(list_t));
    if (NULL != start)
    {
        cur = start; /* Preserve list head, and assign to cur for list trarversal. */
        printf("\nEnter the data : ");
        scanf("%d", &i);
        cur->data = i;
        cur->next = NULL;
        cur = start;
        while(cur != NULL)
        {
            printf("%d ", cur->data);
            cur = cur->next;
        }
    }
    else
    {
        printf("Malloc failed. Program ending.");
    }
    return 0;
}