数据结构day1

[复制链接]
发表于 2025-9-6 11:31:17 | 显示全部楼层 |阅读模式
一,基础概念

1.数据结构:相互之间存在一种或多种特定关系的数据元素的聚集。(特定关系有逻辑关系与物理关系)
(1)逻辑结构
        聚集,所有数据在同一个聚集中,关系平等
        线性,数据和数据之间是一对一的关系
        树, 一对多
        图,多对多

(2)物理结构(在内存当中的存储关系)
        次序存储,数据存放在连续的存储单元中,逻辑关系和物理关系同等;
        链式存储(链表),数据存放的存储单元是随机或恣意的,可以连续也可以不连续  (一般以为不连续)

2、数据、 数剧项、数据元素、数据对象
(1)数据:可输入输出,具备一些操作(相称于C语言中的变量)
(2)数据项:给变量赋予一定的含义
(3)数据元素:多个基础的数据项拼在一起(C语言中用struct自界说表示)
(4)数据对象:数据元素的聚集

3、数据的类型,ADT    abstruct datatype
(1)ADT:是指一组性质雷同的值的聚集及界说在此聚集上的一些操作的总称。
        原子类型,int,char,float
        结构类型,sturct, union,
(2)抽象数据类型, 数学模子 + 操作。

4、数据结构角度表明步伐:步伐 =  数据 + 算法
(1)算法的界说:是解决特定问题求解步骤的形貌,计算机中表现为指令的有限序
列,每条指令表示一个或多个操作。

(2)算法的特性:
         输入,输出特性:输入时可选的,输出时必须的(调用函数后要发生一些变化);
         有穷性:    执行的步骤会自动结束,不能是死循环,并且每一步是在可以担当的时间内完成;
         确定性:同一个输入,会得到唯一的输出;
         可行性:每一个步骤都是可以实现的(用编程语言实现)。

(3)算法的设计:
         精确性:语法精确;
                       正当的输入能得到公道的结果;
                       对非法的输入,给出满意要求的规格说明;
                       对经心选择,甚至刁难的测试都能正常运行,结果精确(加须要的判断);
        可读性:便于交换,阅读,理解(适当表明,编写项目文档
        结实性:输入非法数据,能进行相应的处理,而不是产生异常
        高效性:存储低,效率高 (时间与空间两个方面)
5、算法时间复杂度
(1)是执行这个算法所花时间的度量。
(2)推时间复杂度:
        用常数1 取代运行时间中的所有加法常数;
        在修改后的运行函数中,只保存最高阶项;
        如果最高阶存在且不是1,则取除这个项相乘的常数。
(3)时间复杂度排序:
        O(1)<O(logn)<O(N)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)

二、线性表


1、界说:有零个或多个数据元素的有限序列;

2、元素之间是有次序的,如果存在多个元素,第一个元素无前驱,最有一个没有后
继,其他的元素只有一个前驱和一个后继;

3、当线性表元素的个数n(n>=0)界说为线性表的长度,当n=0时,为空表。在非空的
表中每个元素都有一个确定的位置,如果a1是第一个元素,那么an就是第n个元素。

4、线性表中的次序表:
表头结构(数组当前状态,后期方便应用管理)
typedef struct list {
    DATATYPE *head;//指针
    int tlen;//总长度
    int clen;//当前长度(数组元素个数)(未使用空间时为0)
}SeqList//次序表;


 5.次序表的几种基本操作
int DestroySeqList(SeqList *list);    //销毁次序表
int ShowSeqList(SeqList *list);      //展示次序表数据
int InsertTailSeqList(SeqList *list, DATATYPE *data);    //在次序表尾部插入数据
int IsFullSeqList(SeqList *list);      //判断次序表是否装满
int IsEmptySeqList(SeqList *list);  //判断次序表是否为空
int InsertPosSeqList(SeqList *list, DATATYPE *data, int *pos);  // 在指定位置插入数据
int FindSeqList(SeqList *list, char *name);   //按值查找
int DeleteSeqList(SeqList *list, char *name); //按值删除
int GetSizeSeqList(SeqList *list);  //获取次序表长度

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表