zoukankan      html  css  js  c++  java
  • 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;
    
    	}
    	
    
  • 相关阅读:
    潭州课堂25班:Ph201805201 第十二课 new方法,定制属性访问,描述符与装饰器 (课堂笔记)
    潭州课堂25班:Ph201805201 第十一课 继承,多继承和魔术方法,属性和方法 (课堂笔记)
    Storm笔记
    java代码。继承。。。很戳我的心啊。。不太懂。super的真正用法
    java代码。从来没想过java里的继承是多么的难懂。如哲学
    java代码继承疑惑,请有心人解答
    java冒泡排序
    java数组复制
    java继承。顾不了
    java继承初级
  • 原文地址:https://www.cnblogs.com/lixianhu1998/p/12184455.html
Copyright © 2011-2022 走看看