(自用)C语言数据结构

101 阅读2分钟

数据结构?

数据结构 包含两方面的内容,其一是构成集合的数据元素,其二是数据元素之间存在的关系

数组结构具体应包括三个方面:(数据的逻辑结构、数据的物理结构)、数据的运算的集合

按照逻辑结构分类

● 集合结构 :数据元素除了属于同一个集合外,没有其他联系;

● 线性结构 :数据元素之间呈现的是一对一的关系;

数据元素之间存在一对一的关系,即除了第一个元素和最后一个元素之外,每一个元素都有一个直接前驱和直接后继,第一个元素没有直接前驱,

最后一个 元素没有直接后继

●树形结构:数据元素之间呈现的是一对多的关系;

●图形结构(网状):数据元素之间呈现的是多对多的关系;每个元素的直接前趋和直接后继数目都不限

按照物理结构(存储结构)分类

  • 顺序存储 :所有数据挨在一起存放,连续存放;这种结构的 存储结构和逻辑结构是一致的;(顺序表)
  • 链式存储:不在乎是否挨在一起,可连续存放,也可以不连续;(链表)
  • 索引存储:在存储数据的同时,建立一个附加的索引表,即索引存储结构=数据文件+索引表 常常把索引想象成书的目录,有了目录,我们找书相关的内容就十分简单,便于快速检索。
  • 散列存储:通过构造相应散列函数,由散列函数的值来确定数据节点的存放地址 ( 哈希),根据元素关键字通过哈希函数直接计算出一个值

数据结构相关代码部分编写

创建顺序表


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");
}

操作顺序表

image.png

传值时要将形参写成结构体指针的格式