问题 问答题 简答题

设计将带表头的链表逆置的算法。

答案

参考答案:

设单循环链表的头指针为head,类型为LinkList。逆置时需将每一个结点的指针域进行修改,使其原前驱结点成为后继。如果更改q结点的指针域时,设s指向其原前驱结点,p指向其原后驱结点,则只需进行q->next=s;操作即可,算法描述如下:

void invert(LinkList*head)

{//逆置head指针所指向的单循环链表

Linklist*p, *q,*s;

q=head;

p=head->next;

while(p!=head)//当为空时,逐个结点逆置

{

s=q;

q=p;

p=p->next;

q->next=s;

}

P->next=q;

}

单项选择题
单项选择题