在传统C语言程序中,描述顺序表的存储表示有两种方式:静态方式、动态方式
顺序表的静态存储表示:
#define maxSize 100
typedefintT;
typedefstruct{
T data[maxSize];
intn;
}SeqList;
存储数组的大小和空间已经固定分配,一旦数据空间占满,再加入新的数据结构就会产生溢出,此时存储空间不能扩产,会导致程序停止工作。
顺序表的动态存储表示:
typedefintT;
typedefstruct{
T *data;
intmaxSize , n;
}SeqList;
存储数组的空间是在程序执行过程中通过动态存储分配的语句分配的,一旦数据空间占满,可以另外再分配一块更大的存储空间,用以代换原来的存储空间。同时将表示数组大小的常量maxSize放在顺序表的结构内定义,可以动态的记录扩产后的数组空间大小。
 
数组定义的方法:
注意:new操作的结果有类型(第一个元素的地址),只能赋值给同类型指针变量
int i[] ={,,,};
int *a = new int[];
delete[] a;
二维数组:
大部分语言按照行优先把二维数组存放在一维数组中
int a[][]={{,},{,}};    //a为2列3行,第三行元素为0
int** Copy = new int*[m]; //Copy为m行n列
for(int i=; i<m; i++){
Copy[i]=new int[n];
for(int j=; j<n; j++) Copy[i][j]=;
}
也可以使用void *malloc(unsigned int size)在堆区显式地申请大小为size的内存空间,返回空间首地址,类型为void*
空间存储具体类型数据时,需要显式地进行强制类型转换
int *p1 = (int *)malloc(n*sizeof(int));
free(p1); //即使释放数组,也只要给出指向第一个元素的指针
new和delete,是c++的关键字,它本身不是函数。new不依赖于头文件,c++编译器就可以把new编译成目标代码
malloc和free,是libc里面实现的函数,需要引入头文件stdlib.h
注意:使用delete和free撤销动态数组时,指针必须指向第一个元素
️使用typedef定义数组的方法:
typedef int A[]; A a;  //第一句话定义A是一种元素为int大小为5的数组类型,第二句利用A定义一维数组变量a
typedef int A[];A a[]; //第二句利用A定义量a是5*5的二维int数组

c++线性表和数组的区别的更多相关文章

  1. JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)

    前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基 ...

  2. C语言实现顺序表的基本操作(从键盘输入 生成线性表,读txt文件生成线性表和数组生成线性表----三种写法)

    经过三天的时间终于把顺序表的操作实现搞定了.(主要是在测试部分停留了太长时间) 1. 线性表顺序存储的概念:指的是在内存中用一段地址连续的存储单元依次存储线性表中的元素. 2. 采用的实现方式:一段地 ...

  3. Java探索之旅(10)——数组线性表ArrayList和字符串生成器StringBuffer/StringBuilder

    1.数组线性表ArrayList 数组一旦定义则不可改变大小.ArrayList可以不限定个数的存储对象.添加,插入,删除,查找比较数组更加容易.可以直接使用引用类型变量名输出,相当于toString ...

  4. 线性表(存储结构数组)--Java 实现

    /*线性表的数组实现 *特点:插入删除慢需要平均移动一半的数据,查找较快 *注意:有重复和无重复的数据对应的操作会有些不同 *注意数组一旦创建其大小就固定了 *Java集合长度可变是由于创建新的数组将 ...

  5. Java数据结构之线性表

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  6. 线性表(List)

    1.什么是线性表(List)? 零个或多个数据元素的有限序列. (1)元素之间是有序的. (2)线性表强调是有限的. 2.线性表有哪些操作? (1)线性表的创建和初始化,InitList (2)判空, ...

  7. 数据结构C++版-线性表

    PS:资料来源慕课网视频. 一.什么是线性表 线性表是n个数据元素的有限序列. 分类: 二.补充知识点 1.栈和队列有出操作.入操作,对应线性表(数组)为插入元素和删除元素,而线性表中要获取指定元素值 ...

  8. C 数据结构1——线性表分析(顺序存储、链式存储)

    之前是由于学校工作室招新,跟着大伙工作室招新训练营学习数据结构,那个时候,纯碎是小白(至少比现在白很多)那个时候,学习数据结构,真的是一脸茫然,虽然写出来了,但真的不知道在干嘛.调试过程中,各种bug ...

  9. 线性表的顺序存储结构——java

    线性表的顺序存储结构:是指用一组地址连续的存储单元一次存放线性表的元素.为了使用顺序结构实现线性表,程序通常会采用数组来保存线性中的元素,是一种随机存储的数据结构,适合随机访问.java中ArrayL ...

随机推荐

  1. 在Dockerfile中使用和“Source”的Run指令不起作用?

    报错误 /bin/sh: 1: source: not found sh不支持source bash支持source RUN rm /bin/sh && ln -s /bin/bash ...

  2. seaborn线性关系数据可视化:时间线图|热图|结构化图表可视化

    一.线性关系数据可视化lmplot( ) 表示对所统计的数据做散点图,并拟合一个一元线性回归关系. lmplot(x, y, data, hue=None, col=None, row=None, p ...

  3. Python元组索引、截取

    Python元组索引.截取: 索引下标: tuple_1 = ('a','b','c','d','e','f','g','h') print(tuple_1[0]) # a print(tuple_1 ...

  4. [C++]类的空指针调用成员函数后,会发生什么事?

    类的实例调用成员函数的原理 其实不管是通过对象实例或指针实例调用,其实底层调用的过程都是一样的,都是把当前对象的指针作为一个参数传递给被调用的成员函数.通过下面的相关实例代码进行检验: 实验的C++代 ...

  5. Skill Virtuoso IC6.1.7 的所有View Type

    https://www.cnblogs.com/yeungchie/ 可以用deGetAllViewTypes()来获取. "graphic" "layout" ...

  6. 4.23 子串 AC自动机 概率期望 高斯消元

    考虑40分. 设出状态 f[i]表示匹配到了i位还有多少期望长度能停止.可以发现这个状态有环 需要高斯消元. 提供一种比较简单的方法:由于期望的线性可加性 可以设状态f[i]表示由匹配到i到匹配到i+ ...

  7. PAM学习笔记

    想了想 还是要先把字符串的东西先都学完告一段落了再说 时间不多了 加油~. PAM 回文自动机 比SAM简单到不知道哪里去了. 回文自动机和其他自动机一样有字符集 有状态 有转移. 一个字符串的回文自 ...

  8. Android Studio中如何使用自定义的framework库

    在安卓app开发中,通常不会遇到需要使用自定义framework库的情况,使用的都是标准的内核库.但也有例外,比如针对定制化的ROM,ROM厂商可能在ROM中对安卓源码做过修改,对应用层app暴露出与 ...

  9. 005_go语言中的for循环

    代码演示 package main import "fmt" func main() { i := 1 for i <= 3 { fmt.Println(i) i = i + ...

  10. 利用Jsoup爬取新冠疫情数据并存至数据库

    需要用到的jar包(用来爬取的jsoup,htmlunit-2.37.0-bin以及连接数据库中的mysql.jar) 链接:https://pan.baidu.com/s/1VlylWmlhjd8K ...