链表空指针建立(个人想法)

来源:互联网 发布:今年最流行的网络语 编辑:程序博客网 时间:2024/05/18 02:03

我现在在一个文件夹中,要建立一个单向动态链表,我先写一个头文件,里边包含了对链表的操作的几个不同的函数,还有节点的结构体,头文件内容为:


,写其他的都没问题,可当我在创建一个新链表时,有这样的一个疑问,创建新链表是要在创建时把结点的内容都给他写上还是只创建一个空链表,昨天我写的是创建时把结点的内容都给他写上的代码:如下:


在写这段代码的时候有个小东西要注意,在这里我定义了一个i变量,就是在i=1,即第一次给链表赋值要判断一下data的值,如果为空,就结束(因为函数结束的标志就是当输入为0时结束),不这样写的话你一开始就输入0的话,链表是会输出一个0的,而不是想的那样结束本链表。


今天写的是当建立一个链表时只是建立一个空的链表,里边只有一个头结点,代码:


这个函数中有node_p的返回值,调用该函数的时候代码为:


注意:先定义一个node_p head,然后将head传给creat_list(head);,调用完之后用head接住头指针,今后再用该链表。

*****************************************

还有一个不用返回值的代码:


调用如下:


看到这里,传给子函数的是*head,这是因为head指的是指向结点类型的一个指针变量,而当调用creat函数之后我们要改变链表,所以这时再用head达不到效果,因为若head只是把结点的值传递给crate函数了,主函数中的链表还是没有变,在这里,我们要用一个一个指向head的地址的指针来作参数,即*head,他表示**node_p,这样在creat函数中改变的就是链表的地址,因此在main函数中链表也就改变了。


这点小问题让我忙活了两天,唉,还是学的不好啊!努力!













原创粉丝点击