当前位置: 首页 > news >正文

数据结构day1

相互之间存在一种或多种特定关系的数据元素的集合。数据之间有何关系、数据比较多,在一个集合里。例如数组,单一性有效性连续性。

逻辑结构(人的逻辑上思维)

集合:所有数据在同一个集合中,关系平等。

线性:数据和数据之间是一对一的关系

树:数据和数据之间是一对多的关系。

图:数据和数据之间是多对多的关系。

物理结构(在内存当中的存储关系)

顺序存储,数据存放在连续的存储单位中。逻辑关系和物理关系一致。

链式,数据存放的存储单位是随机或任意的,可以连续也可以不连续。例如使用malloc分配空间时,在堆区分配空间时不一定连续。

1数据:具备输入输出特性,提供一些基础操作,例如加减乘除——变量

2数据项:

3数据元素:struct Per数据元素

                {

                        char name//数据项;int age;char phone;

                }

struct Per list [100]//4数据对象

抽象数据类型,ADT abstract datatype

是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
原子类型,int, char, float
结构类型,sturct,union,

.h抽象数据类型:数学模型+操作。

程序 = 数据 + 算法(不同角度概念可能略有不同,从数据结构来看)

算法:数据结构中的算法可以对应到C语言的函数,解决特定问题求解步骤的描述,计算机中表现为指令的有限序列,每条指令表示一个或多个操作。

算法的特征:

1、输入输出特性,输入是可选的,输出是必需的

2、有穷性,执行的步骤会自动结束,不能是死循环,并且每一步是在可以接受的时间内完成。

3、确定性,同一个输入,会得到唯一的输出。

4、可行性,每一个步骤都是可以实现的。

算法的设计:

1、正确性,语法正确合法的输入能得到合理的结果。对非法的输入给出满足要求的规格说明,对精心选择甚至更刁难的测试都能正常运行,结果正确

2、可读性,便于交流阅读理解

3、健壮性,输入非法数据,能进行相应的处理,而不是产生异常

4、高效,存储低,效率高

事前分析法、事后统计法

时间复杂度:执行这个算法所花时间的度量(运算量的量级)

推导时间复杂度:

1、用常数1取代运行时间中的所有加法常数

2、在修改后的运行函数中,只保留最高阶项

3、如果最高阶存在且不是1,则取除这个项相乘的常数

O(1)< O(logn)< O(N)< O(nlogn)< O(n^2)< O(n^3)< O(2^n)< O(n!)< O(n^n)

常数级 树状结构(快速查找) …… nlogn快速排序  n^3(图的遍历 三重循环) 

线性表:零个或多个数据元素的有限序列,元素之间是有顺序的。如果存在多个元素,第一个元素无前驱,最后一个没有后继,其他的元素只有一个前驱和一个后继。当线性表元素的个数n(n>=0)定义为线性表的长度,当n = 0时,为空表。在非空的表中每个元素都有一个确定的位置,如果a1是第一个元素,那么an就是第n个元素。

线性表的常规操作

定义通用数据类型

typedef struct person {
char name[32];
char sex;
int age;
int score;
}DATATYPE;
typedef int DATATYPE;
typedef struct list{DATATYPE *head;int tlen;int clen;
}

顺序表

SeqList *CreateSeqList(int len);//创建一个顺序表
int DestroySeqList(SeqList *list);//销毁一个顺序表
int ShowSeqList(SeqList *list);//遍历显示一个顺序表
int InsertTailSeqList(SeqList *list, DATATYPE data);//在尾部插入元素

相关文章:

  • HTML基础结构
  • AWS ACM 重磅上线:公有 SSL/TLS 证书现可导出,突破 AWS 边界! (突出新功能的重要性和突破性)
  • [Hestia]开源网络服务器控制面板,快速、可靠、开源
  • 【计算复杂度】普通卷积 VS 深度可分离卷积
  • 深入解析AIGC:技术原理、应用场景与未来挑战
  • 【附源码】考试报名系统设计与实现+SpringBoot + Vue (前后端分离)
  • 多智能体协同的力量:赋能AI安全报告系统的智能设计之道
  • 运行go程序时出现的同包多文件不能调用的问题
  • Python datetime模块详解
  • 【GNSS定位算法】Chapter.2 导航定位算法软件学习——Ginav(二)SPP算法 [2025年6月]
  • Neo4j.5.X社区版创建数据库和切换数据库
  • 最近小峰一直在忙国际化项目,确实有点分身乏术... [特殊字符] 不过! 我正紧锣密鼓准备一系列干货文章/深度解析
  • Flink SQL执行流程深度剖析:从SQL语句到分布式执行
  • Redis集群性能优化实战指南
  • 开启游戏新时代:神经网络渲染技术实现重大跨越
  • 【C++】C++中的虚函数和多态的定义与使用
  • [3-01-02].第15节:调优工具 - 查看 SQL 执行成本
  • FastGPT极速上手指南:Docker容器化部署实战
  • 《Effective Python》第十章 健壮性——使用 assert 和 raise 提升 Python 程序的健壮性
  • 松灵 PiPER 高性价比突围:如何在AI领域筑牢技术壁垒
  • 分销网站怎么做/新闻热搜榜 今日热点
  • 自己做的网站加载慢/百度24小时人工客服
  • 邯郸wap网站制作/seo课程培训班
  • wordpress 获取别名/成都企业seo
  • 手机wap网站免费建站/深圳网络推广培训
  • 广州建网站有哪些/网络营销培训课程