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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

数据结构学习-带头结点的单链表就地逆置

發布時間:2025/4/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构学习-带头结点的单链表就地逆置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

所謂“就地是指輔助空間復雜度為O(1)。

解法一:將頭結點摘下,然后從第一結點開始,依次前插入到頭結點的后面(頭插法),直到最后一個結點為止。

?

代碼如下

LinkList Reverse (LinkList L) {LNode *p,*r;//p為工作指針,r為p的后繼以防斷鏈p=L->next;//從第一個元素結點開始L->next=NULL;//先將頭結點L的next域置為NULLwhile(p!=NULL)//依次將元素結點摘下   {r=p->next;//暫存p的后繼p->next=L->next;//將p結點插入到頭結點之后L->next=p;p=r;}return L; }

解法二:

通過若干操作將指針反轉達到逆置的目的。

假設pre、p和r指向3個相鄰的結點,如上圖。*pre之前的結點的指針都已經調整完畢,它們的next指針都指向其原前驅結點。現在令*p結點的next域指向*pre結點,注意到一旦調整指針的指向后,*p的后繼結點的鏈就斷開了,為此用r來指向原*p結點的后繼結點。

處理第一個結點時,將其next域置為NULL,。處理最后一個結點后,將頭結點的指針指向它。

代碼:

Linklist reserve(LinkList L) {LNode *pre,*p=L->next,*r=p->next;p->next=NULL;//處理第一個結點while(r!=NULL)//r為空,則說明p為最后一個結點 {pre=p;//依次遍歷p=r;r=r->next;p->next=pre;//指針反轉   }L->next=p;//處理最后一個結點return L; }

?

轉載于:https://www.cnblogs.com/wyloving/p/8298925.html

總結

以上是生活随笔為你收集整理的数据结构学习-带头结点的单链表就地逆置的全部內容,希望文章能夠幫你解決所遇到的問題。

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