其实感觉差不多 但是在使用的过程当中自己要具体分清楚
一般来说如果你要使用的是带头结点的
一般都带上下面两句
struct node *head = (struct node*) malloc (sizeof(struct node));
head->next = NULL;
通过头结点的初始化后 使用头结点就很方便 例如create(head); 能发现自己写这个代码的时候不用返回值也是能达到目的的
如果你想使用头结点 但是在调用的函数当中(也就是说你的主函数当中)只是简单声明一下例如:
struct node *head = NULL;
这样子的 那么在使用的时候 就有点退化(头指针)的感觉啦 那么create(head) 不返回点东西是不能用的 当然前提是 在一级指针的
情形下。
而对于头指针 可以很清楚的看到 它的使用不需要另外再分配内存空间(当然指针本身也是要占用内存空间的(sizeof(int)大小))
只是指向了第一个结点。
综上: 当你使用的是头指针(head = NULL) 那么第一次用的时候 就要当心这里 head->next; 如果没有指向一个结点的时候这句是不能用的
当使用的是带头结点的时候 (head != NULL)
而head->next 一般初始化的时候是为head->next = NULL;
不管怎么说一切都是为了使用方便
而制定的。 其实明白了也就那么点东西。