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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

理论基础 —— 线性表 —— 循环链表

發布時間:2025/3/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理论基础 —— 线性表 —— 循环链表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【概述】

循環鏈表的構建與單鏈表十分相似,唯一不同的是,對于鏈表的表尾,需要將原來的 NULL 改為 first

以下僅給出構造函數的實現

【構造函數】

1.無參構造函數

生成一個頭結點,讓頭指針指向頭結點,并將頭結點的指針域指向頭指針。

template <class T> linkList<T>::circleList(){//無參構造函數first=new Node<T>;//頭指針指向頭結點first->next=first;//頭結點的指針域指向頭指針 }

2.有參構造函數

1)頭插法

使用頭插法的有參構造函數,構造循環鏈表的主體部分與單鏈表一致,區別在于要在一開始令頭結點指向頭指針,即?first->next=first

template <class T> linkList<T>::circleList(T a[],int n){//頭插法的有參構造函數first=new Node<T>;first->next=first;//頭結點指向頭指針//與單鏈表一致for(int i=0;i<n;i++){Node<T> *s=new Node<T>;s->data=a[i];s->next=first->next;first->next=s;} }

2)尾插法

使用尾插法的有參構造函數,構造循環鏈表的主體部分與單鏈表一致,區別在于建表完畢后要將尾指針指回頭結點,即?r->next=first

template <class T> linkList<T>::circleList(T a[],int n){//尾插法的有參構造函數first=new Node<T>;Node<T> *r=first;for(int i=0;i<n;i++){Node<T> *s=new Node<T>;s->data=a[i];r->next=s;r=s;}r->next=first;//將尾指針指回頭結點 }

【經典應用】

循環鏈表能解決許多問題,其中,最經典的,就是對于約瑟夫環問題的解決

約瑟夫環是一個數學的應用問題:已知 n 個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍,從編號為 k 的人開始報數,數到 m 的那個人出列,他的下一個人又從 1 開始報數,數到 m 的那個人又出列,依此規律重復下去,直到圓桌周圍的人全部出列,問最后剩下的那個人的編號

解決:使用不帶頭指針的循環鏈表即可解決,將初始編號加入循環鏈表后,開始尋找報數起點,然后從報數起點開始,報數循環到第 m-1 個點,最后將 m-1 號點之后的 m 號點從循環鏈表中刪除即可,重復尋找 m-1 號點刪除 m 號點,直到剩下一個結點。

struct Node{int data;Node *next; }; int main(){int n,m,k;cin>>n>>m>>k;Node *first=new Node;//頭指針first->data=1;Node *p=first;//工作指針for(int i=2;i<=n;i++){Node *s=new Node;//新建節點s->data=i;p->next=s;p=p->next;}p->next=first;//鏈表尾端指向鏈表頭,構成循環鏈表p=first;for(int i=1;i<=k-1;i++)//尋找報數起點p=p->next;while(p!=p->next){//只剩下一個結點時for(int i=1;i<m-1;i++)//循環報數到m之前的一個結點p=p->next;Node *q=p->next;//第m個元素即要出環的元素p->next=q->next;//摘鏈delete q;//刪除出換元素p=p->next;//繼續指向下一元素}cout<<(p->data)<<endl;return 0; }

?

總結

以上是生活随笔為你收集整理的理论基础 —— 线性表 —— 循环链表的全部內容,希望文章能夠幫你解決所遇到的問題。

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