69,371
社区成员
发帖
与我相关
我的任务
分享
Node *link_reverse(Node *head)
{
Node *pre,*cur,*next;
/*head->pnext =NULL;*/
pre = head;
cur = pre->pnext;
next = cur->pnext;
head->pnext =NULL;//第一次的pre,cur,next
if(next == NULL)//链表只有两个节点,如果没有此语句,当链表确实只有两个节点时,就会发生错误。
{
cur->pnext = pre;
head = cur;
return head;
}
while(next->pnext != NULL)
{
cur->pnext = pre;//修改指针,每次循环修改一次
pre = cur;
cur = next;
next = next->pnext;
}//循环终止时,next->pnext == NULL
cur->pnext = pre;
next->pnext = cur;
head = next;
return head;
}
void Revert(struct List *head, struct List *temp)
{
while(head!=NULL)
{
temp=head->next;
head->next=head;
head=temp->next;
}
}
这个函数可以实现应该可以实现逆置...但是第一个节点和最后一个怎么处理没想好
while(q!=&la)
{
printf("%c",q->e);
q--;//链表存储是非连续的,你怎么能用q--呢
}