动态数组与链表


动态数组的大小不定,内存连续的,可以根据自己的需要,增加或删除元素。知道第一个元素的,那么就可以知道第二个元素,通过下标访问。如果中间插入一个元素,那么中间后面的元素的下标全部都要改变。

使用前记得引如#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; }

C++ 动态数组与链表的更多相关文章

  1. Delphi 的动态数组

    传统的Pascal 语言其数组大小是预先确定的,当你用数组结构声明数据类型时,你必须指定数组元素的个数.专业程序员也许知道些许动态数组的实现技术,一般是采用指针,用手工分配并释放所需的内存. Delp ...

  2. 数组、链表、栈、队列和STL

    数组 数组是一种最基本的数据结构,它是内存上的一块连续存储空间.正因如此数组的随机访问很方便.但数组也有其固有的限制,大小分配后不能改变. STL中的数组 STL中的Array是静态数组模板,就是我们 ...

  3. 动手编写—动态数组(Java实现)

    目录 数组基础回顾 自定义动态数组 动态数组的设计 抽象父类接口设计 抽象父类设计 动态数组之DynamicArray 补充数组缩容 全局的关系图 声明 数组基础回顾 1.数组是一种常见的数据结构,用 ...

  4. vc++基础班[28]---动态数组及动态链表的讲解

    C++中也有相应的动态数组.动态链表.映射表的模板类,就是STL中的:vector.list.map 他们属于C++标准中的一部分,对于程序的移植性来说也是不错的,但是在MFC编程中使用 CArray ...

  5. 数据结构(1) 第一天 算法时间复杂度、线性表介绍、动态数组搭建(仿Vector)、单向链表搭建、企业链表思路

    01 数据结构基本概念_大O表示法 无论n是多少都执行三个具体步骤 执行了12步 O(12)=>O(1) O(n) log 2 N = log c N / log c N (相当于两个对数进行了 ...

  6. 常用数据结构-线性表及Java 动态数组 深究

    [Java心得总结六]Java容器中——Collection在前面自己总结的一篇博文中对Collection的框架结构做了整理,这里深究一下Java中list的实现方式 1.动态数组 In compu ...

  7. PHP内核探索:数组与链表

    在C语言中,我们可以自定义各种各样的数据结构,用来把很多数据保存在一个变量里面,但是每种数据结构都有自己的优缺点,PHP内核规模如此庞大,是否已经找到了一些非常棒的解决方法呢? 我们在选择各种数据结构 ...

  8. 线性表之顺序存储结构(C语言动态数组实现)

    线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...

  9. QVector&lt;QString&gt; 显示器里面的动态数组元素QString和char *转变

    QVector类是一类提供了动态数组模板. QVector<T>是Qt普通容器类的一种. 它将自己的每个对象存储在连续的内存中.能够使用索引號来高速訪问它们.QList<T>. ...

随机推荐

  1. SuperSocket命令和命令加载器

    关键字: 命令, 命令加载器, 多命令程序集 命令 (Command) SuperSocket 中的命令设计出来是为了处理来自客户端的请求的, 它在业务逻辑处理之中起到了很重要的作用. 命令类必须实现 ...

  2. phpstorm 里能做git的命令行操作吗?

    在VCS菜单下面有 GIT -> Branches 然后会弹出branch菜单,后面怎么操作应该不需要解释吧,所有的branch都列出来自己选 在Tools菜单下面有Open Terminal. ...

  3. python基础三之字符串

    Python的数据类型 数字(int),如1,2,3,用于计算. 字符串(str),如s = 'zxc',储存少量数据,进行操作. 布尔值(bool),True和False,用于进行判断. 列表(li ...

  4. Yet Another Number Sequence——[矩阵快速幂]

    Description Everyone knows what the Fibonacci sequence is. This sequence can be defined by the recur ...

  5. P1047 汉诺塔

    题目描述 汉诺塔是根据一个印度传说形成的数学问题:有三根杆子A, B, C, A杆上有n个穿孔圆盘, 盘的尺寸由下到上依次变小. 要求按照下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘 大盘不能叠 ...

  6. Junit 测试集(打包测试)实例

    测试集,直译过来的意思就是把测试集合起来,再详细一些就是把多个单元测试集合起来 .单元测试可以理解为:单个接口 或者单个类/方法 的测试 项目背景:测试基于spring开发的项目代码 实例模板:pac ...

  7. ES6,ES7重点介绍

    1. 字符串模板 <!--旧版拼接字符串--> var str = '我是时间:'+new Date(); <!--新版拼接字符串--> let str = `我是时间${ne ...

  8. POJ 2778 DNA Sequence (ac自动机+矩阵快速幂)

    DNA Sequence Description It's well known that DNA Sequence is a sequence only contains A, C, T and G ...

  9. tet-2

      一.html和css部分 1.如何理解CSS的盒子模型? 标准盒子模型:宽度=内容的宽度(content)+ border + padding 低版本IE盒子模型:宽度=内容宽度(content+ ...

  10. 2018-2-13-win10-uwp-从Type使用构造

    title author date CreateTime categories win10 uwp 从Type使用构造 lindexi 2018-2-13 17:23:3 +0800 2018-2-1 ...