动态数组与链表


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

使用前记得引如#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. TCP/IP模型的层次结构

  2. SuperSocket主动从服务器端推送数据到客户端

    关键字: 主动推送, 推送数据, 客户端推送, 获取Session, 发送数据, 回话快照 通过Session对象发送数据到客户端   前面已经说过,AppSession 代表了一个逻辑的 socke ...

  3. Codeforces Round #188 (Div. 1 + Div. 2)

    A. Even Odds 奇数个数\(\lfloor \frac{n+1}{2}\rfloor\) B. Strings of Power 从位置0开始,统计heavy个数,若当前为metal,则可以 ...

  4. Laravel基本使用、生成Cookie、返回视图、JSON/JSONP、文件下载及重定向

    https://yq.aliyun.com/ziliao/23889 1.Response篇 1.1 基本响应 最基本的HTTP响应只需在路由闭包或控制器动作中返回一个简单字符串即可,但是具体业务逻辑 ...

  5. 2018-12-25-dot-net-double-数组转-float-数组

    title author date CreateTime categories dot net double 数组转 float 数组 lindexi 2018-12-25 09:27:46 +080 ...

  6. ThinkPHP 模版中的内置标签

    内置标签就是模版引擎提供的一组可以完成控制.循环和判断功能的类似HTML语法的标签.   一.判断比较:   1.if标签进行条件判断 //if语句的完整格式 <if condition=&qu ...

  7. H3C IPv6地址自动配置

  8. C# 循环的判断会进来几次

    最近有小伙伴告诉我,在循环的判断条件只会计算一次,本金鱼不相信,于是就做了测试,本文记录我做的测试. 先来写一个简单的代码, 就一个循环,循环的判断是从一个函数获取值 class Program { ...

  9. jq 技巧汇总

    1,jQuery方法$()实际上是拥有两个参数的 $('li','.firstEl').onclick(function(){.......})   这里,第二个参数用来限制第一个参数给定的查找结果 ...

  10. Ubuntu常用命令大全 以及 PHP+MySQL代码部署在Linux(Ubuntu)上注意事项

    PHP+MySQL代码部署在Linux(Ubuntu)上注意事项 https://cloud.tencent.com/developer/article/1024187 Ubuntu常用命令大全 ht ...