数组是内存的实现及栈和队列的数据结构

目录

一、数组是内存的实现

二、栈和队列

栈的数据结构

队列

队列的数据结构


一、数组是内存的实现

数组是指多个相同的数据类型在内存中连续排列的一种形式。作为数组元素的各个数据会通过下标编号来区分,这个编号也叫做索引,如此一来,就可以对指定索引的元素进行读写操作。

用char、short、long三种元素来定义数组,数组的元素用[value]括起来,里面的值代表的是数组的长度,就像下面的定义:

char g[100];
short h[100];
long i[100];

数组定义的数据类型,也表示一次能够读写的内存大小,char、short、long分别已1、2、4个字节为例进行内存的读写

数组是内存的实现,数组和内存的物理结构完全一致,尤其是在读写1个字节的时候,当字节数超过1时,只能通过逐个字节来读取,下面是内存的读写过程:

不同数据类型的数组:

数组是内存的实现及栈和队列的数据结构_第1张图片

二、栈和队列

数组是内存的一种实现,使用数组能够使编程更加高效,也可以通过其他数据结构进行内存的读写

栈(stack)是一种很重要的数据结构,栈采用LIFO(Last In Fist Out)即后入先出的方式对内存进行操作。它就像一个大的收纳箱,你可以往里面放相同类型的东西,比如书,最先放进收纳箱的书在最下面,最后放进收纳箱的书在最上面,如果你想拿书的话,必须从最上面开始取,否则是无法取出最下面的书籍的

栈的数据结构就是这样,你把书籍压入收纳箱的操作叫做 压入(push),你把书籍从收纳箱取出的操作叫做 弹出(pop),它的模型图大概如下:

数组是内存的实现及栈和队列的数据结构_第2张图片

栈的数据结构

入栈相当于是增加操作,出栈相当于是删除操作,只不过叫法不一样。栈和内存不同,它不需要指定元素的地址。它的大概使用如下:

//压入数据
Push(123);
Push(456);
Push(789);

//弹出数据
J = Pop();
k = Pop();
l = Pop();

在栈中,LIFO方式表示栈的数组中所保存的最后面的数据(Last In)会被最先读取出来(First On)

运行时栈的变化:

数组是内存的实现及栈和队列的数据结构_第3张图片

队列

队列和栈很相似但又不同,相同之处在于队列也不需要指定元素的地址,不同之处在于队列是一种先入先出(First In First Out)的数据结构。队列在我们生活中的使用很像是我们去景区排队买票一样,第一个排队的人最先买到票,以此类推,俗话说:先到先得。它的使用如下:

//往队列中写入数据
EnQueue(123);
EnQueue(456);
Enqueue(789);

//从队列中读出数据
m = DeQueue();
n = DeQueue();
o = DeQueue();

向队列中写入数据称为EnQeue()入列,从队列中读取数据称为Deqeue()

数组是内存的实现及栈和队列的数据结构_第4张图片

 队列的数据结构

与栈相对,FIFO的方式表示队列中最先保存的数据会被优先读取出来

运行时队列的变化:

数组是内存的实现及栈和队列的数据结构_第5张图片

 队列的实现一般有两种:顺序队列循环队列,上图的就是顺序队列

你可能感兴趣的:(计算机基础,数据结构,计算机基础,栈,队列,算法)