数据结构综合应用题④
问题:有一个线性表,采用带头结点的单链表L来存储。设计一个算法将其逆置。要求不能建立新结点,只能通过表中已有结点的重新组合来完成。
思路:逆序也就是链表建立头插法
答案:
void reversel(LNode *L)
{
LNode *p=L->next,*q;
L->next=NULL;
while(p!=NULL)//p结点始终指向旧的链表的开始结点
{
q=p->next;//q结点作为辅助结点来记录p的直接后继结点的位置
p->next=L->next;//将p所指的结点插入新的链表中
L->next=p;
p=q;//因为后继结点已经存入q中,所以p仍然可以找到后继(此时的新开始结点)
}
}