日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

链表翻转

發布時間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 链表翻转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要求用盡可能快的方式實現鏈表的翻轉操作。

這個我們須要用兩個指針。一個指向當前的節點,一個指向當前節點的前一個節點,每一次使當前節點的指向前一個節點來實現兩個節點之間的翻轉,然后順次再移動實現循環。

代碼也非常easy,例如以下所看到的:

#include <iostream> using namespace std;struct Node {int key;Node* next; }; Node* createList(int arr[],int nLength); Node* reverseList(Node* head); void printList(Node* head); void clearList(Node* head);void main() {int arr[] = {1,3,5,7,9};int nLength = sizeof(arr)/sizeof(arr[0]);Node* head = createList(arr,nLength);printList(head);head = reverseList(head);printList(head);clearList(head); }Node* createList(int arr[],int nLength) {Node* head = new Node;head->key = arr[0];head->next = NULL;Node *p = head;for(int i=1;i<nLength;i++){Node* ptr = new Node;ptr->key = arr[i];ptr->next = NULL;p->next = ptr;p = p->next;}return head; }Node* reverseList(Node* head) {Node* preNode = NULL;Node* pNode = head;while( pNode != NULL ){Node* pNext = pNode->next;pNode->next = preNode;preNode = pNode;pNode = pNext;}return preNode; }void printList(Node* head) {Node* p = head;while( p!= NULL ){cout<<p->key<<endl;p=p->next;} }void clearList(Node* head) {Node* p = head;Node* ptr;while( p!= NULL ){ptr = p->next;delete p;p = ptr;} }

轉載于:https://www.cnblogs.com/jzssuanfa/p/7230460.html

總結

以上是生活随笔為你收集整理的链表翻转的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。