bool ListInsertHead(Node *pNode) { pNode->next=m_pList->next; m_pList->next=pNode; if(m_pList-next==pNode) { return true; } else { return false; } } bool ListInsertTail(Node *pNode) { Node *currentNode=m_pList; while(currentNode->next!=NULL) { currentNode=currentNode->next; } currentNode->next=pNode; pNode->next=NULL; if(currentNode->next==pNode) { return true; } else { return false; } }
直接将传入的结点作为链表中新添加的结点内存,是不安全的。因为传入的结点内存是有可能在链表外被释放掉的,如果被释放掉,则链表就会断开失效;而申请一个新的结点内存作为链表的结点内存,则该内存只有在链表中才可以被释放掉,这样保证了链表内存是安全释放的;
不可以啊 看Head函数中,第一行语句已经改变了pNode的指针域,接着的第二行语句中pNode就不是你之前传进来的结点。。。。就像交换a与b 的值,需要定义一个temp值
不可以,调用完会销毁