线性表与数组的根本区别_c++线性表和数组的区别

在传统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

Copy[i]=new int[n];

for(int j=; 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数组

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

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

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

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

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

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

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

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

Java数据结构之线性表

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

线性表(List)

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

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

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

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

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

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

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

随机推荐

Vertica 6.1不完全恢复启动到LGE方法

环境:RHEL6.2 + Vertica 6.1.3-7 确定所有节点的vertica进程都停掉(包括agent和python),如果有运行的,停止它或者杀掉它. 确定所有节点的spread进程都正常 ...

MapReduce剖析笔记之二:Job提交的过程

上一节以WordCount分析了MapReduce的基本执行流程,但并没有从框架上进行分析,这一部分工作在后续慢慢补充.这一节,先剖析一下作业提交过程. 在分析之前,我们先进行一下粗略的思考,如果要我 ...

Spring学习进阶(二)Spring IoC

在使用Spring所提供的各种丰富而神奇的功能之前,必须在Spring IoC容器中装配好Bean,并建立Bean与Bean之间的关联关系.控制反转(Inverser of Control ioc)是 ...

juery 实现下拉框多选 jquery-multiselect

效果: 除了jquery,需要引用的样式和js文件:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值