질문이 있습니다.(__)

struct input{

        char *str;
        input* link;
};
void main(){
        
        input *head;
        head = (input*)malloc(sizeof(input));
        input *flag;
        char s[20];
        char *p;
        
        p=s;
        gets(p);

        head->str = p;
        head->link = NULL;
        flag = head;


        p=s;
        gets(p);

        input *n = (input*)malloc(sizeof(input));

        n->link =NULL;
        n->str = s;
        flag->link = n;
        flag = n;
}

대충 이런식인데... 둔번입력받고 두번 출력하면 마지막에 입력받은 것만 두번 나오거든요.

문제를 생각해보니까 p=s; 에서 같은 메모리를 가르키고 있으니까

첫 입력값이 두번째에 입력된 값으로 겹쳐지기때문인가요???

그리고 head->str 에서 이것에 문자열을 입력하려면 malloc 사용해줘야하나요? head->str = malloc(~~~); 이런식..

이해가 넘안되서..도와주십쇼 형님들.