
试写一算法对单链表实现就地逆置?
voidInverse(LinkList&L){LNode*p,*q;p=L->next;L->next=NULL;while(p!=NULL){q=p;p=p->nex...
void Inverse(LinkList &L)
{
LNode *p, *q;
p = L->next;
L->next = NULL;
while (p != NULL)
{
q = p;
p = p->next;
q->next = L->next;
L->next = q;
}
}
请讲一下这个吧..就每一步什么意思...谢谢了! 展开
{
LNode *p, *q;
p = L->next;
L->next = NULL;
while (p != NULL)
{
q = p;
p = p->next;
q->next = L->next;
L->next = q;
}
}
请讲一下这个吧..就每一步什么意思...谢谢了! 展开
1个回答
展开全部
void Inverse(LinkList &L)
{
LNode *p, *q;
p = L->next; /*记录第一个结点地址*/
L->next = NULL; /*把链表设置成空表*/
while (p != NULL) /*依次按头插法将各结点插入,就实现了逆置*/
{
q = p; /*用q记录待插入结点地址*/
p = p->next; /*用p记录待插入结点的后继结点地址*/*/
q->next = L->next; /*将q(待插入结点)插入到头结点的前面*/
L->next = q; /*将新插入结点作为新的头*/
}
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询