为什么链表不能直接通过结构体指针来创建?

对于
typedef struct list
{
int y;
struct list *next;
}N;
我们会创建一个指针,然后申请内存,再连接上
为什么不可以直接通过结构体内的指针创建节点呢?
如current->next=malloc(sizeof(N));

这样子才能形成链表啊,前一个节点记录一个指向下一个节点地址的指针,就像链条一样
current->next=malloc(sizeof(N)); 你要这么写也不是不可以啊。不过代码写起来不就费事了么,要给新创建的节点赋值你就得写:
current->next->data = x;
current->next->next = NULL;
看着别扭啊。不如:
list * p = (list * )malloc(sizeof(N));
p->data = x;
p->next = NULL;
current->next = p;
这样可读性更高

如果你要链表中间增加一个节点就不能这样做了