数据类型,线性表概念

数据类型
在计算机中,因为内存空间是有限的,所以不同的类型的数据分配的内存空间大小不同
数据类型是指一组性质相同的值的集合及定义在此集合上的一些操作的总称

在C语言中,按照值的不同,数据类型分为两类
原子型:不可以再分解的基本类型,包括整型,实型等
结构性:有若干个类型组合而成,是可以再分的。例如:整型数组是有若干个整型数据组成的


抽象数据类型:是对已有数据类型进行抽象,指的是一个数据模型及定义在该模型上的一组操作


线性表:零个或多个数据元素的有限序列,包括顺序表和链式表

线性表特点:
1.它是一个序列,数据元素之间是有序的,数据元素之间是一对一的关系

2.数据元素个数是有限的(0个有限序列的线性表成为空表)

包含的操作:
创建或初始化、查找、插入、删除、清空(增删改查)

ADT线性表(sequence list)
data(数据)1.线性表数据元素是一个集合{a_1, a_2, a_3, ……a_n),数据元素的数据类型为DataType(int, char, 自定义)
2.除了第一个元素a_1外,每个元素有且仅有一个直接的前驱元素
3.除了最后一个a_n外,每个元素有且仅有一个直接的后继元素
4.每个数据元素之间的关系是一对一的关系
Operaotion:创建或初始化,
Initialized_List(*List); //初始化线性表:创建一个空的线性表List
InsertElement(*List, index, elem); //在线性表LIst的Index下标处插入元素elem
DeleteElement(*List, index, *elem);//删除线性表List中第index个元素,并返回删除元素的指针。
IsEmpty(*List);
ClearList(*List);
GetEmement(*List, index, *elem);

线性表的顺序存储结构:指的是用一段地址连续的存储单元依次存储线性表的数据元素
3个属性:存储空间的起始位置,数组datas
     最大存储容量
     线性表当前长度,当前元素个数

1.我们需要定义线性表的最大存储空间#define MAX_SIZE 255
2.线性表里需要有统一类型的元素集合typedef int Element;
Typedef struct {
Int id;
Char *name;
}ElementType;
3.定义线性表结构
Typedef struct{
ElementType datas[MAX_SIZE]
Int length;
}SeqList;


地址的计算方法:第i个元素的地址 = 首地址 + 第i个元素的下标i-1
Position:位置,从1开始
index,下标,从0开始

线性表的顺序存储结构的优点:
1.无需为表示表中元素之间的逻辑关系而增加额外的存储空间
2.可以快速存取表中任意位置的元素
缺点:
1.删除和插入操作需要移动大量的元素
2.当线性表长度变化较大时,难以确定存储空间的容量
3.造成空间的“碎片”


链式存储:
链表:优点:1.不用定义规定长度
2.存储的个数不收限制
3.插入和删除元素时,不用移动其他元素

头指针:在链表中第一个结点的存储位置
头结点:在单链表的第一个结点前附近的一个结点(有了头结点,第一个结点前插入和删除第一个结点时,操作与其他结点的操作就统一了

单链表:链表的每一个结点中只包含一个指针域
获取第i个结点的数据

typedef struct Monster{
int id;
Char *name;
Struct Monster *next; //指向下个结点的指针
}Monster;

Void test()
{
Monster monster1 = "

Test:返回一个局部变量的值

原文地址:https://www.cnblogs.com/hi3254014978/p/9459322.html