线性表---顺序表
来源:互联网 发布:php抽象工厂模式 编辑:程序博客网 时间:2024/04/30 18:31
1、线性表
线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。
线性表——List,零个或多个数据元素的有限序列。
首先它是一个序列。也就是说,元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。
例子:假设La表示集合A,Lb表示集合B,现在要得到一个集合A使得A=AUB
void unionL(SqList *La,SqList Lb){ int La_len,Lb_len,i; ElemType e; La_len=ListLength(*La); Lb_len=ListLength(Lb); for (i=1;i<=Lb_len;i++) { GetElem(Lb,i,&e); if (!LocateElem(*La,e)) ListInsert(La,++La_len,e); }}
1.1 顺序存储结构
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
就是在内存中找了块地方,通过占位的形式,把一定内存空间给占了,然后把相同数据类型的数据元素依次存放在这块空地中。
既然数据元素的类型都相同,所以可以用C语言(其他语言也相同)的一维数组来实现顺序存储结构,即把第一个数据元素存到数组下标为0的位置中,接着把线性表相邻的元素存储在数组中相邻的位置。
线性表的顺序存储结构的代码如下:
#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int ElemType; /* ElemType类型根据实际情况而定,这里假设为int */typedef struct{ ElemType data[MAXSIZE]; /* 数组,存储数据元素,最大值为MAXSIZE */ int length; /* 线性表当前长度 */}SqList;
这里,我们发现描述顺序存储结构需要三个属性:
存储空间的起始位置——数组data,它的存储位置就是存储空间的存储位置。线性表的最大存储容量——数组长度MAXSIZE线性表的当前长度length
注意:线性表的长度应该小于等于数组的长度。
顺序表代码如下:
#include<iostream>#include<time.h>#include <stdlib.h>using namespace std;#define maxsize 20typedef int ElemType;typedef struct{ ElemType a[maxsize]; int length;}SqList;SqList Init(){ SqList L; L.length = 0; return L;}SqList CreateList(SqList L, int n){ srand((unsigned)time(NULL)); for(int i=0;i<n;i++) { //产生0~10之间的随机数。若是%100,则产生的是两位数 L.a[i] = rand()%10; L.length++; } return L;}void PrintList(SqList L){ for(int i=0;i<L.length;i++) { cout<<L.a[i]<<" "; } cout<<endl;}int main(){ SqList List = Init(); List = CreateList(List, 5); PrintList(List); return 0;}
结果:
8 4 3 0 1Process returned 0 (0x0) execution time : 0.223 sPress any key to continue.
0 0
- 线性表-顺序表
- 线性表--- 顺序表
- 线性表顺序表
- 线性表->顺序表
- 线性表- 顺序表
- 线性表--顺序表
- 线性表---顺序表
- 线性表--顺序表
- 线性表---顺序表
- 【线性表】顺序表
- 线性表--顺序表
- 线性表(顺序表)
- 线性表---顺序表
- 线性表--顺序表
- 线性表-顺序表
- 线性表-顺序表
- 数据结构--顺序线性表
- 线性表顺序存贮
- 知识分类
- ubuntu下个人常用库的安装
- Linux 文件描述符(file descriptor, fd)以及文件描述符操作dup(), dup2()
- 简单的JAVA小程序(计算器)
- NDK链接main(可执行)链接so
- 线性表---顺序表
- 星网锐捷后记
- 浅谈thrift TVirtual*
- 数据结构中的重要知识
- LeetCode(111) Minimum Depth of Binary Tree
- 为什么jQuery不能监听body的滚动事件呢?
- 浮点数的分数表达
- 欢迎使用CSDN-markdown编辑器
- Leetcode231 Power of Two