c語言鏈表逆序輸出 如何將單向鏈表逆序?
如何將單向鏈表逆序?如果head節(jié)點是l,那么就有p=q=l/*p,q是指向head節(jié)點的兩個指針*/while(p->next!=null)P=P->next/*讓P指向鍵列表中要訪問的最后
如何將單向鏈表逆序?
如果head節(jié)點是l,那么就有p=q=l/*p,q是指向head節(jié)點的兩個指針*/while(p->next!=null)P=P->next/*讓P指向鍵列表中要訪問的最后一個節(jié)點*/while(1){while(Q->next!=P)q=q->next/*讓q向后看以找到要打印的最后一個節(jié)點*/printf(%dn“,P->data)P=q/*P向前移動一個*/q=L/*q也指頭節(jié)點*/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(!頭| |?。╤ead->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(!頭| |?。╤ead->next))
返回head
pList h=NULL,h1=head
而(head){
h1=head->next
head->next=h
h=head
head=h1
}
返回h
}