日期:2014-05-16  浏览次数:20789 次

谁可以告诉我一下,哈希表中,下面这个程序是什么意思?
#define HASH_ITER(hh,head,el,tmp)                                                \
for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL);                 \
  el; (el)=(tmp),(tmp)=DECLTYPE(el)((tmp)?(tmp)->hh.next:NULL))
#endif


我能看出来,在删除结点,有没有人能详细描述一下,总觉得不清楚
hash

------解决方案--------------------
就是一个for循环头,从el=head开始,一直循环到el为NULL为止。大体是这个意思,DECLTYPE这个布吉岛是神马东西。
没看过内核的飘过

------解决方案--------------------
引用:
#define HASH_ITER(hh,head,el,tmp)                                                \
for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL);                 \
  el; (el)=(tmp),(tmp)=DECLTYPE(el)((tmp)?(tmp)->hh.next:NULL))
#endif


我能看出来,在删除结点,有没有人能详细描述一下,总觉得不清楚

就是个for语句啊。
初始化:(el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL)
条件判断: el 是否为空
控制语句:(el)=(tmp),(tmp)=DECLTYPE(el)((tmp)?(tmp)->hh.next:NULL)