鍊錶的三種實現

2021-09-11 02:23:57 字數 1325 閱讀 8836

原題

頻繁的插入和刪除就用鍊錶,陣列可以實現隨機訪問,鍊錶不能

題解

方法一:陣列解法

#includeusing namespace std;

int n,a,b,k,v[100000]=;

struct studentd[100000];

int main()

else

} cin>>n;

for(int i=1;i<=n;i++)

for(int i=0;d[i].r;i=d[i].r)//技巧

}*p[100010],*q;

int main()

p[j]->right=p[i];p[i]->left=p[j];

} else

p[j]->left=p[i];p[i]->right=p[j];

if(j==u) u=i;//用u來記錄開頭元素,僅限於左插的情況,

//插在頭元素左側,從而產生了新的開頭

//可以認為是沒有設定頭元素的弊端,陣列解法設定了頭元素,沒有這種問題

} }cin>>m;

for(i=1;i<=m;i++)

if(k==u) u=p[k]->right->n;

//***是否可以去掉

p[k]->left=p[k]->right=null;//注意所刪元素在兩頭的情況

方法三:二叉樹遍歷解法

二叉樹的中序遍歷就是鍊錶的順序

#includeusing namespace std;

struct lol d[101000];

void dfs(int x)//中序遍歷

int main()

else d[x].lc=i;

} else

else d[x].rc=i;

} }

cin>>m;

for(int i=1;i<=m;i++)

dfs(1);//呼叫中序遍歷輸出

鍊錶建立的三種方法

作為最常用的資料結構之一,鍊錶被廣泛應用在各個方面,下至作業系統底層的驅動程式上至各種應用軟體,都處處可以看到鍊錶的身影,皆因其操作的簡便與應用的高效性。總結個人目前所學,鍊錶的建立方式主要有 以下幾種方法 方法一 struct link node struct link node list nul...

三種方式實現 從尾到頭輸出鍊錶

三種方式實現 從尾到頭輸出鍊錶 方法一 借用棧倒序輸出鍊錶 方法二 先翻轉鍊錶,再順序輸出 方法三 遞迴實現,乙個妙,兩個字妙啊 方法一 借用棧倒序輸出鍊錶 因為棧是先進後出,把鍊錶中的元素存進棧中,鍊錶前面的元素在棧底,後面的元素在棧頂,鍊錶後面的元素先出棧 方法二 先翻轉鍊錶,再按順序列印 主要...

三種方式實現 從尾到頭輸出鍊錶

三種方式實現 從尾到頭輸出鍊錶 方法一 借用棧倒序輸出鍊錶 方法二 先翻轉鍊錶,再順序輸出 方法三 遞迴實現,乙個妙,兩個字妙啊 方法一 借用棧倒序輸出鍊錶 因為棧是先進後出,把鍊錶中的元素存進棧中,鍊錶前面的元素在棧底,後面的元素在棧頂,鍊錶後面的元素先出棧 方法二 先翻轉鍊錶,再按順序列印 主要...