問題:將乙個單向單向鍊錶逆序倒轉,要求o(n)的時間複雜度和o(1)的空間複雜度
該問題有兩種解法,一種非遞迴,一種是遞迴,**如下:
#include #include "link.h"
typedef struct linknode
linknode;
//遞迴
linknode* reverselink(linknode* link)
linknode* nextnode = link->next;
linknode* reverselink = reverselink(link->next);
nextnode->next = link;
link->next = null;
return reverselink;
}//非遞迴
linknode* reverselink2(linknode* link)
linknode* reverselink = pre;
return reverselink;
}int main(int argc, char** argv)
else
}linknode* publiclink = head;
printf("before reverse: ");
linknode* temp = publiclink;
while (temp)
printf("\n");
printf("after reverse: ");
//linknode* reverselink = reverselink(publiclink);
linknode* reverselink = reverselink2(publiclink);
temp = reverselink;
while (temp)
getchar();
return 0;
}
關於單向鍊錶的逆序
本文 http chaishushan.blog.163.com blog static 130192897200911725838630 假設鍊錶的結構為 struct node 單向鍊錶是乙個有序的序列.假設有乙個單向鍊錶a 1,2,3,4,5,現在將a表逆序後得到鍊錶b 5,4,3,2,1 常...
鍊錶逆序問題
傳送門 題目描述 有乙個單鏈表,請設計乙個演算法,使得每k個節點之間逆序,如果最後不夠k個節點一組,則不調整最後幾個節點。例如鍊錶1 2 3 4 5 6 7 8 null,k 3這個例子。調整後為,3 2 1 6 5 4 7 8 null。因為k 3,所以每三個節點之間逆序,但其中的7,8不調整,因...
單向鍊錶逆序的3種實現
遍歷實現 node reverse node list return r 其實上面的這個操作自然地對應於棧的出棧 壓棧操作.基於棧思想的實現 1.判斷棧是否為空 bool isempty node stack 2.向棧stack中壓入乙個node元素 void push node stack,nod...