有一个单链表L(至少有1个结点) 其头结点指针为head 编写一个函数将L逆置 即最后一个结点变成第一
结点,指针,倒数
已帮助 人
有一个单链表L(至少有1个结点),其头结点指针为head,编写一个函数将L逆置,即最后一个结点变成第一个结点,原来倒数第二个结点编程第二个结点,依此类推。
请帮忙给出正确答案和分析,谢谢!
-
正确答案:链表逆置的通常做法是将工作指针指向第一个元素结点然后将头结点的指针域置空。接着将链表各结点从第一个结点开始直至最后一个结点依次前插至头结点后使得最后插入的结点成为链表的第一结点第一个插入的结点成为链表的最后结点。 算法如下: LinkList reverselist(LinkList head){ //将带头结点的单链表head逆置 LinkList p=head->next; head->next=NULL; while(p!=NULL){ r=p->next; //暂存p的后继 p->next=head->next; //逆置 head->next=p; //逆置 p=r; //恢复待逆置结点 } return head; }
链表逆置的通常做法是将工作指针指向第一个元素结点,然后将头结点的指针域置空。接着将链表各结点从第一个结点开始直至最后一个结点,依次前插至头结点后,使得最后插入的结点成为链表的第一结点,第一个插入的结点成为链表的最后结点。算法如下:LinkListreverselist(LinkL,isthead){//将带头结点的单链表head逆置LinkListp=head->next;head->next=NULL;while(p!=NULL){r=p->next;//暂存p的后继p->next=head->next;//逆置head->next=p;//逆置p=r;//恢复待逆置结点}returnhead;}
