原題
頻繁的插入和刪除就用鍊錶,陣列可以實現隨機訪問,鍊錶不能
題解
方法一:陣列解法
#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...
三種方式實現 從尾到頭輸出鍊錶
三種方式實現 從尾到頭輸出鍊錶 方法一 借用棧倒序輸出鍊錶 方法二 先翻轉鍊錶,再順序輸出 方法三 遞迴實現,乙個妙,兩個字妙啊 方法一 借用棧倒序輸出鍊錶 因為棧是先進後出,把鍊錶中的元素存進棧中,鍊錶前面的元素在棧底,後面的元素在棧頂,鍊錶後面的元素先出棧 方法二 先翻轉鍊錶,再按順序列印 主要...
三種方式實現 從尾到頭輸出鍊錶
三種方式實現 從尾到頭輸出鍊錶 方法一 借用棧倒序輸出鍊錶 方法二 先翻轉鍊錶,再順序輸出 方法三 遞迴實現,乙個妙,兩個字妙啊 方法一 借用棧倒序輸出鍊錶 因為棧是先進後出,把鍊錶中的元素存進棧中,鍊錶前面的元素在棧底,後面的元素在棧頂,鍊錶後面的元素先出棧 方法二 先翻轉鍊錶,再按順序列印 主要...