分别用递归和非递归方式实现
/* *非递归实现 *@retval:NULL on fail,else on success */ link_t *link_reverse(link_t *head) { link_t *cur = head; link_t *cur_r; link_t *cur_l = NULL; while( cur != NULL ) { cur_r = cur->next; cur->next = cur_l; cur_l = cur; cur = cur_r; } return cur_l; } link_t *link_reverse_r0(link_t *head,link_t **new_head) { assert( head != NULL ); if( head->next == NULL ) { *new_head = head; return head; } else { link_t *p = link_reverse_r0( head->next,new_head); p->next = head; return head; } } /* *递归实现 */ link_t *link_reverse_r(link_t *head) { link_t *new_tail = head; link_t *new_head = NULL; link_reverse_r0(head,&new_head); new_tail->next = NULL; return new_head; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。