자료구조를 공부중인데 오늘 이해가 안되는 소스가 있어서요

단순 연결 리스트를 구현하는 예제인데

typedef struct ListNode{
    char data[10];
    struct ListNode *link;
}listNode;

리스트에 사용되는 노드를 이렇게 선언하는데 왜 마지막에 listNode를 한번 더 써주는 거죠?

typedef struct{ ... }name;

typedef struct name{ ... };

이렇게 스트럭트 직후에 쓰거나 아니면 스트럭트 다음에 블럭 닫고 나서 쓰거나

둘 중에 하나만 써야 하는게 아닌가요?