單向鍊錶逆序問題

2021-07-11 12:27:37 字數 987 閱讀 4531

問題:將乙個單向單向鍊錶逆序倒轉,要求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...