南汇惠南最新的招聘 女:删除节点(链表)

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 16:05:38
删除最后一个节点:
person *current1 , *current2 ;
current1 = head ;
current2 = current -> next ;
while ( current2 -> next != NULL )
{
current1 = current2 ;
current2 = current1 -> next ;
}
free ( current1 -> next ) ;
current1 -> next = null ;
if ( head == current1 )
head = null ;

哪位学友解释一下这些代码?今天刚弄懂了插入节点,现在删除节点又迷糊了。。。
这些代码,是我从《21天学通C语言》上抄下来的,偶没看懂

这段代码好像不对哦,哪里来的?

其实删除最后一个节点,只需要1个指针就可以了.我给你修改简化了一下代码,解释也好解释的多

person *current;
current = head ; //current 指向头节点

while ( current -> next != NULL ) //如current的下一个节点不为空(说明还没到最后一个节点)
current = current -> next ; //current指向自己下一个节点

free ( current) ; //如果为空退出while,释放current
current=null; //current指定为null

由于你的链表是带头节点的,所以head如果等于current的话,那么就说明这个链表没有节点,但是这也不应该把head释放了