C++ 動態數組與鏈表


動態數組與鏈表


動態數組的大小不定,內存連續的,可以根據自己的需要,增加或刪除元素。知道第一個元素的,那么就可以知道第二個元素,通過下標訪問。如果中間插入一個元素,那么中間后面的元素的下標全部都要改變。
使用前記得引如#include <vector>
鏈表是一個一個結點在內存中離散的分布。各個結點之間通過元素內部的指針實現的。要查找中間某個元素,必須從第一個元素開始一部一步遍歷 ,使用之前記得 #include <list>

*定義一個動態數組(方法很多,這里不多說,自己百度):

    int a[5]={2,4,6,3,5};
	vector<int>  s1(a,a+sizeof(a)/sizeof(int));//int類型的數組,通過一般數組導入方法。
	vector<int>  s2(4,88);//定義s2(元素個數,元素值)

基本的操作:

    int a[5]={2,4,6,3,5};
	vector<int>  s1(a,a+sizeof(a)/sizeof(int));
	vector<int>  s2(4,88);
	int b=s1.at(2);//返回下表為2的元素。
	cout<<b<<endl;
	cout<<s1.size()<<endl;//返回數組元素的個數
	cout<<s1.front()<<endl;//返回首個元素
	cout<<s1.back()<<endl;//返回最后一個元素
	s1.begin();//返回數組第一個元素的下標。返回的迭代器類型。
	s1.end();同上
	bool c=s1.empty();//判斷數組是否為空,如果為空,則返回true.否則返回false.
	cout<<c<<endl;
	//s1.clear();//清空數組元素。
	//bool c2=s1.empty();
	//cout<<c2<<endl;
	s1.swap(s2);//交換s1和s2兩個數組的元素。
	s1.swap(s2);
	//for(int i=0;i<s1.size();i++)
	//	cout<<s1[i]<<"   ";

	//for(int i=0;i<s2.size();i++)
	//	cout<<s2[i]<<"   ";
	s1.push_back(100);//尾部插入一個元素100.
	/*for(int i=0;i<s1.size();i++)
		cout<<s1[i]<<"   ";*/
	//s1.insert(s1.begin()+2,3,333);//任意位置插入insert(開始插入的位置,(如果插入相同的數,插入的個數),插入的元素)函數
	//for(int i=0;i<s1.size();i++)
	//	cout<<s1[i]<<"   ";
	//s1.insert(s1.end(),a,a+sizeof(a)/sizeof(int));//把普通數組加入到s1中。
	//	for(int i=0;i<s1.size();i++)
	//	cout<<s1[i]<<"   ";
	//s1.pop_back();//刪除尾部的一個元素。
	//s1.erase(s1.begin() +2);//刪除s1第三個元素。
	//s1.erase(s1.begin() +2 ,s1.end()-2)//刪除【s1.begin() +2 ,s1.end()-2】之間的元素,閉合。
//=============================
//代器遍歷的方法:
   vector<int>::iterator iter;//要定義遍歷的數組種類的迭代器,用法相當於指針。
	for(iter=s1.begin();iter!=s1.end();iter++)
		cout<<*iter<<"--";
	    cout<<endl;



定義一個鏈表:

	int a[]={1,2,3,4,5};
	list<int> list1(a,a+5);//通過普通數組導入鏈表

鏈表的基本操作:
基本操作和動態數組一樣,在此基礎上增加了。

    int a[]={1,2,3,4,5};
	list<int> list1(a,a+5);
	list1.reverse();//list1中元素倒序
	list1.sort();//list1中元素排序,默認是由小到大。
	list1.remove(2);//移除某個元素。
	list1.push_front(100);//開頭插一個元素100.instrt()用法和vector一樣。
	list1.pop_front()//刪除第一個元素。
	 int ss[4]={7,6,5,4};
	 list1.insert(list1.begin(),ss,ss+2);//普通數組插入鏈表中。
	 //定義迭代器輸出鏈表。
	list<int>::iterator  itor1 ;
	list<int>::iterator itor2;
	itor1=list1.begin();
	itor2=list1.end();
	for(itor1;itor1!=(itor2);++itor1)
	{
		cout<<*itor1<<endl;

	}
	


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM