关于#链表#的问题,如何解决?

为什么创建结构体单链表一定要malloc空间,而我下面的代码这样做不对,(初学,多多包涵)
#include 
#include 

using namespace std;

typedef struct LNode
{
  int data;
  struct LNode *next;
} LNode, *LinkList;

int main()
{
  LinkList L;
  L->next = NULL;
  for (int i = 1; i <= 3; i++)
  {
    LNode* node;
    node->data = 1;
    node->next = L->next;
    L->next = node;
  }

  LNode* p = L->next;
  while(p != NULL)
  {
    cout << 1;
    printf("%d", p->data);
    p = p->next;
  }
  return 0;
}

注意:

LinkList L;
  L->next = NULL;

这两行就会崩溃了。L是个指针,没有分配空间之前是不能对其成员变量赋值的。