我觉得原因不是没有内存空间,这里的形参pNode是个指针类型的,它指向的和实参所指向的是同一个地址吧,它是有内存空间的,只是我们不能把它弄到链表里,因为如果这样做了,链表在清空的时候会把每个节点都释放,也就是把 实参 所指向的内存给释放掉了,这并不是我们想要的结果,所以有必要建立一个newNode,这样对这个链表操作的时候就不会影响到这个链表以外的东西,我是一枚小白,这是个人理解,说的不对还请多多指教!
temp->next代表着*temp这个节点的指针域
newNode->next需要指向一个节点的地址,而temp就是*temp的地址
大兄弟,相等是“==”符号,这里的“=”符号是把后面的值赋予给前面的值
你可自己测试一下
https://github.com/cjy513203427/C_Program_Base
/****************** 如此 ******************************************/
temp->next = newNode;
newNode->data = pNode->data;
newNode->next = NULL;
/********************************************************/
你这几句是认真的吗? 经过前面的循环 temp不是指向NULL吗? 那temp->next 从何而来?
m_pList->next = newNode;
newNode->next = temp;
这两句有问题的,应该修改为
newNode->next = m_pList->next;
m_pList->next = newNode;
不需要,当调用m_iLength时它会自动计算线性表中节点的个数
可以,这样没错,其实没必要再另外建一个Node的指针变量哈,James老师在LiseDelete()中其实就没有再建一个临时的Node指针了哈。
直接将传入的结点作为链表中新添加的结点内存,是不安全的。因为传入的结点内存是有可能在链表外被释放掉的,如果被释放掉,则链表就会断开失效;而申请一个新的结点内存作为链表的结点内存,则该内存只有在链表中才可以被释放掉,这样保证了链表内存是安全释放的;