数据结构?
数据结构 包含两方面的内容,其一是构成集合的数据元素,其二是数据元素之间存在的关系。
数组结构具体应包括三个方面:(数据的逻辑结构、数据的物理结构)、数据的运算的集合
按照逻辑结构分类
● 集合结构 :数据元素除了属于同一个集合外,没有其他联系;
● 线性结构 :数据元素之间呈现的是一对一的关系;
数据元素之间存在一对一的关系,即除了第一个元素和最后一个元素之外,每一个元素都有一个直接前驱和直接后继,第一个元素没有直接前驱,
最后一个 元素没有直接后继
●树形结构:数据元素之间呈现的是一对多的关系;
●图形结构(网状):数据元素之间呈现的是多对多的关系;每个元素的直接前趋和直接后继数目都不限
按照物理结构(存储结构)分类
- 顺序存储 :所有数据挨在一起存放,连续存放;这种结构的 存储结构和逻辑结构是一致的;(顺序表)
- 链式存储:不在乎是否挨在一起,可连续存放,也可以不连续;(链表)
- 索引存储:在存储数据的同时,建立一个附加的索引表,即索引存储结构=数据文件+索引表 常常把索引想象成书的目录,有了目录,我们找书相关的内容就十分简单,便于快速检索。
- 散列存储:通过构造相应散列函数,由散列函数的值来确定数据节点的存放地址 ( 哈希),根据元素关键字通过哈希函数直接计算出一个值
数据结构相关代码部分编写
创建顺序表
struct Order_List//顺序表,数组OR指针(malloc)实现
{
elementType arr[MAX_SIZE];//顺序表元素
int length;//顺序表元素个数
};
List = Creatlist();
struct Order_List *Creatlist() {
struct Order_List* List = (struct Order_List*)malloc(sizeof(struct Order_List));
if (List == NULL) {
printf("分配内存失败\n");
return NULL;
}
memset(List, 0, sizeof(struct Order_List));
//memset(目标内存块地址 ,置的值 ,字节数 )数组清0
List->length = 0;//////why???
printf("创建表成功\n");
return List;
}
顺序表
销毁创建的顺序表
overList(&List);//不要忘记&符号
void overList(struct Order_List** List) {//?
free(*List);
*List = NULL;
printf("已销毁\n");
}
操作顺序表
传值时要将形参写成结构体指针的格式