Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2315898
  • 博文数量: 473
  • 博客积分: 12252
  • 博客等级: 上将
  • 技术积分: 4307
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-12 10:02
文章分类

全部博文(473)

文章存档

2012年(8)

2011年(63)

2010年(73)

2009年(231)

2008年(98)

分类: C/C++

2008-04-11 09:03:16

// 功能: 释放链表( 要求: 链表节点的第一个元素为 next 指针 ) // 参数: __head_addr : 链表头指针( _head )的地址( &_head ). 实为指针的指针.
 //       struct node_t
//       {
//           struct node_t *next;
//           ...
//       };
//       struct node_t *_head = NULL;
//       ...
//       free_list( &_head );
static void free_list( void *__head_addr )
{    
 void *_head, *_free;      // 取链表头指针    
 _head = *( void ** )__head_addr;     
 while( NULL != _head )    
 {
         _free = _head;          //
   _head = _head->next         //   因为 next 指针为节点的第一个元素   
      //   又因 _head 为节点首字节的地址       
  //   所以 _head 为 next 指针的地址        
 //   所以 next = *_head         _head = *( void ** )_head;      
    free( _free );   
  }   
   // 将链表的头指针置空    
 *( void ** )__head_addr = NULL;
}
阅读(828) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~