单链表的逆置java 什么是单链表的逆置?
什么是单链表的逆置?例如,链表a-> B-> C-> D有头和尾。局部反转是指:a next=&BB->next=&CC->next=&DD->next=0反转后:B->n
什么是单链表的逆置?
例如,链表a-> B-> C-> D有头和尾。局部反转是指:a next=&BB->next=&CC->next=&DD->next=0反转后:B->next=&AC->next=&BD->next=&CA->next=0。所谓局部求逆,就是在运算中遇到a->next=&B时,重写为B->next=&a
,即算法的辅助空间为O(1)。其思想是:倒排列表初始为空,依次将列表中的节点从原列表中“删除”,然后将倒排列表的头依次插入(即“头插入”倒排列表),使其成为倒排列表的第一个“新”节点,依此类推,直到原列表为空。实现代码:void converse(LinkList*head){LinkList*P,*q P=head->next head->next=null,而(P){/*向后移动一个位置*/q=P P=P->next/*header plug*/q->next=head->next head->next head->next=q}}