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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

数据结构--双链表

發布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构--双链表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

雙鏈表

/*L x,表示在鏈表的最左端插入數 x。
R x,表示在鏈表的最右端插入數 x。
D k,表示將第 k 個插入的數刪除。
IL k x,表示在第 k 個插入的數左側插入一個數。
IR k x,表示在第 k 個插入的數右側插入一個數。*/
#include<iostream>
using namespace std;
const int N=1e5+10;
int l[N],r[N],index,value[N];
void ini()
{//一開始左邊界節點指向右邊界節點,右邊界節點指向左邊界節點r[0]=1;l[1]=0;//更新節點索引index=2;
}void insert(int k,int x)//在第k個節點后插入x
{//將值賦給新節點value[index]=x;//將新節點分別指向插入位置的右節點和左節點r[index]=r[k];l[index]=k;//將新節點右邊一節點向左指向新節點,將新節點左邊一節點向右指向新節點l[r[k]]=index;r[k]=index;//更新節點索引index++;
}
void remove(int k)
{//刪除第k個節點,第k-1的右指針指向原先第k個節點的右指針指向的節點r[l[k]]=r[k];//刪除第k個節點,原先第k個節點的右指針指向的節點的左指針指向原先第k個節點的左指針指向//的節點l[r[k]]=l[k];
}
int main()
{// 0 是左邊界  1是右邊界//因為0和1都被占用,所以第1個節點也就是2=1+1 ,第2個節點為3=2+1;//∴第k個節點也就是k+1ini();int M,k,x;string operation;cin>>M;//操作個數while(M--){cin>>operation;//操作指令if(operation=="L")//在鏈表的最左端插入x{//也就是在左邊界后插入一個節點,就是最左端插入一個節點cin>>x;insert(0,x);}else if(operation=="R")//在鏈表的最右端插入x{//也就是右邊界的左節點后插入一個新節點cin>>x;insert(l[1],x);}else if(operation=="D")//把第k個插入的數刪除{cin>>k;remove(k+1);}else if(operation=="IL")//第k個插入的數左側插入一個數{//也就是在第k個插入的數的左節點后插入一個數cin>>k>>x;insert(l[k+1],x);}else//第k個插入的數右側插入一個數{//在第k個節點后插入一個數cin>>k>>x;insert(k+1,x);}}int pos=r[0];while(pos!=1)//當指向右邊界節點時,循環結束{cout<<value[pos]<<" ";pos=r[pos];}return 0;
}

一種更復雜的鏈表是“雙向鏈表”。每個節點有兩個鏈接:一個指向前一個節點,當此節點為第一個節點時,指向空值;而另一個指向下一個節點,當此節點為最后一個節點時,指向空值。

指定位置插入節點

刪除元素

總結

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

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