在创建链表的时候C语言使用了 malloc函数为结点创建空间,当malloc成功之后一般末尾是返回链表的头节点,但是malloc失败之后我是 return NULL,这样就使得头节点变为NULL了。如果程序在第三次malloc的时候失败,返回一个NULL给头节点,会不会使得前面两个结点丢失呢? 见过成功和失败都return头节点的函数,这样做对吗,如果对的话如何知道malloc失败了呢?
你这个讨论就比较深入了。首先要看你对create函数的定义,是有一个节点创建失败就算失败,还是创建几个就算几个。如果是前者,那应该返回NULL,并且在返回NULL之前将已创建的节点free掉。如果是后者,那么应该返回创建成功的链表头结点,并且应该再反馈给外部函数一些错误信息,让外部函数知道后可以进行相应处理
malloc失败的话,malloc函数返回的就是NULL,节点指针就是一个null指针。
malloc失败之后我是 return NULL,这样就使得头节点变为NULL了 ,你这么搞是不对的啊,往链表中新增节点的时候,如果malloc失败了,返回的应该是原来的head,而不应该是NULL