c语言链表逆序输出 如何将单向链表逆序?
如何将单向链表逆序?
如果head节点是l,那么就有p=q=l/*p,q是指向head节点的两个指针*/while(p->next!=null)P=P->next/*让P指向键列表中要访问的最后一个节点*/while(1){while(Q->next!=P)q=q->next/*让q向后看以找到要打印的最后一个节点*/printf(%dn“,P->data)P=q/*P向前移动一个*/q=L/*q也指头节点*/if(P=L)/*access finished exit*/break}你可以参考它
typedef struct listnode{
listnode*next
element data
}listnode,*plist
这是三种不同的单列逆序算法,两个递归和一个非递归
plist reverselist(plist head){
]if(!Head |(Head->next))
return Head
pList ph=ReverseList(Head->next)
Head->next->next=Head
Head->next=NULL
return ph
}
pList ReverseList(pList Head,pList&tail){
if(!头| |!(head->next){
tail=head
return head
}
pList pt
pList ph=ReverseList(head->next,pt)
pt->next=head
head->next=NULL
tail=head
return ph
}
pList reverselistunrec(pList head){
if(!头| |!(head->next))
返回head
pList h=NULL,h1=head
而(head){
h1=head->next
head->next=h
h=head
head=h1
}
返回h
}
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。