面向對象的數據結構–鏈 list
1.概述
鏈中一般帶有一個不存放任何元素的啞元素
分類:
單向(單鏈和單循環鏈)
雙向(雙鏈和雙循環鏈)
2.使用
訪問list中的元素需要使用迭代器(iterator),可用於list::iterator
插入元素
L.insert(iter,0);//在iter所指向的元素2之前插入0
替換元素
*iter=10;
刪除元素
iter=L.erase(iter);//不可刪除啞元素
iter還有常量迭代器list::const_iterator c_iter迭代器遍歷L中的所有元素並在屏幕上輸出
list<int>::const_iterator c_iter;
for(c_iter=L.cbegin();c_iter!=L.cend();++iter)
cout<<*c_iter<<'';
簡練形式
for(auto c_iter=L.cbegin();c_iter!=L.cend();+=iter)
cout<<*citer<<'';
逆向迭代器和常量迭代器
//逆向迭代
for(auto cr_iter=L.crbegin();cr_iter!=L.crend();++cr_iter)
cout<<*cr_iter<<endl;
預處理並計算特殊統計量
#include<list>
#include<iostream>
void InputandPreprocess(list<int> &L,int&MAX)
{
L.clear();//清空L中的所有數據
int data;
cin>>data;
MAX=data;
while(data>=0)
{
L.push_back(data);
if(data>MAX)
max=data;
cin>>data;//讀入數據
}
}
熟悉雙循環鏈
#include<iostream>
#include<vector>
#include<list>
using namespacen std;
int main()
{
const size_t d=8;//學號8位
const size_t W=3;//循環移位次數
const size_t MAX=10;//最大迭代數
vector<int> V(d);
list<int> L;
for(size_t i=0;i<d;i++)
{
cin>>V[i];
L/push_back(V[i]);
}
auto iter=L.begin();
size_t x=0;
for(size_t i=0;i<MAX;i++)
{
for(size_t j=0;j<W;j++)