数据结构基本概念、关系,算法

一.基础概念

1.数据结构是什么?

计算机对数据组织管理的方式

研究数据与数据之间的关系 的一门学科。

数据结构指的是数据的逻辑结构和存储结构及其操作.

c 复制代码
关系:
		逻辑关系:线性(前驱数:后继数 满足1:1) 非线性
		存储关系: 顺序存储 链式存储
		运算关系: 增删改查、排序...

2.应用

数据库系统 操作系统 编译系统。。。。

复制代码
3.三种数据结构
线性结构:重点掌握
树形结构:二叉树 重点:遍历
图形结构:了解

4.数据的逻辑结构与存储结构密切相关
算法设计: 取决于选定的逻辑结构
算法实现:依赖于采用的存储结构

5.算法

1)概念

算法(Algorithm)是一个有穷规则(或语句、指令)的有序集合 。它确定了解决某一问题的一个运算序列。对于问题的初始输入,通过算法有限步的运行,产生一个或多个输出。

2)特性

有穷性 ------ 算法执行的步骤(或规则)是有限的;

确定性 ------ 每个计算步骤无二义性;

可行性 ------ 每个计算步骤能够在有限的时间内完成;

输入 ------ 算法有一个或多个外部输入;

输出 ------ 算法有一个或多个输出。

3)评价算法好坏的方法 :
消耗时间的多少: 时间复杂度
消耗存储空间的多少: 空间复杂度
容易理解、容易编程和调试、容易维护。

4)时间复杂度(重点)

概念:语句频度之和的数量级表示
T(n)=O(f(n))

例如:
冒泡排序: T(n) = O(n^2)

5)空间复杂度

设算法对应问题的体积(或规模)为n,执行算法所占存储空间的量级为D(n),则D(n)为算法的空间复杂度(Space Complexity)。

二、线性表

c 复制代码
存储: 
		 顺序存储: 顺序表
		 链式存储: 链表
	运算: 增删改查 、排序....
复制代码
1.顺序表
	线性表的顺序存储叫顺序表。
	特点:
		逻辑线性、存储线性
c 复制代码
2.抽象顺序表数据结构
    	#define SIZE 64
    	typedef int data_t;
    	
    	typedef struct list{
    		data_t data[SIZE]; 
    		int index;//记录表尾元素下标
    	}LIST;//给 struct list 取别名 LIST
    	
    	//1.创建空表
    	LIST *createSeqlist(void)
    	{
    		LIST * seqList = (LIST *)malloc(sizeof(LIST));//在堆区给顺序表申请空间
    		if(NULL == seqList)//出错处理
    			return NULL;
    			
    		bzero(seqList->data, sizeof(seqList->data));//内存清零函数
    		seqList->index = -1;//表示空表
    	
    		return seqList;//返回顺序表的首地址
    	}
    	
    	//2.判空
    	
    	//3.判满
    	
    	//4.增删改查
    	...
相关推荐
shehuiyuelaiyuehao11 小时前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法
203号居民13 小时前
LeetCode hot 100 — 141. 环形链表2
算法·leetcode·链表
玖玥拾13 小时前
LeetCode 202 快乐数
算法·leetcode
LuminousCPP13 小时前
数据结构-二叉树(六):BFS层序遍历与完全二叉树判断|复用链式队列 + (N_0=N_2+1) 性质证明
c语言·数据结构·笔记·算法·二叉树·宽度优先
ZhouDevin14 小时前
算法论文/数据集3——CLD(TMLR2025)压缩训练集,仅保留对验证集有益的样本
人工智能·深度学习·算法·计算机视觉
Tim_1015 小时前
【LeetCode】29、两数相除
算法·leetcode·职场和发展
纪念 22915 小时前
数据结构排序(三)
数据结构
船厂电气自动化ai大模型15 小时前
AI大模型与数学/第63课:矩阵定义、矩阵加法、标量乘法(逐级精讲)
数据结构·人工智能·深度学习·线性代数·算法
余额瞒着我当琳16 小时前
算法修炼 chapter 2 双指针进阶、盛最多水的容器、有效三角形的个数、两数之和、三数之和、四数之和
算法
你压到我腿毛了66616 小时前
C语言冒泡算法(Bubble sort)
c语言·数据结构·算法