写在前面
为了缓和看论文找创新点的焦虑感,本菜鸡决定每次自我动摇时学一学数据结构。看的视频是某站华科老师的录屏,参考教材是严蔚敏老师的数据结构(C版)。博主(根据自己的理解)只做入门学习不做深入理解,各位大佬高抬贵手~
绪论
基本概念和术语
在生活中很多问题不再是数值计算的数学方程,而是诸如表、树和图之类的数据结构。数据结构是数学、算法和硬件的交集,是一门重要的学科。

数据:所有能输入到计算机中且能被处理的符号总称,例如图像、声音等。
数据元素:是数据的基本单元,例如整型数、字符串等;数据项是数据的最小单位。
数据对象:性质相同的数据元素的集合,是数据的子集。
数据结构:互相之间存在一种或多种特定关系的数据元素的集合。
(ps:努力看了原教材,由于c不过关很多术语看不懂,打算直接莽后面,打算看完视频回过头来再研读)

线性结构的定义:若结构为非空有限集,只有一个起点和终端结点,并且所有结点都只有一个前驱和后继。线性结构反应结点间的逻辑关系是一对一的。典型的线性结构包括:线性表、堆栈、字符串、数组等。
第二章 线性表
2.1线性表的逻辑结构
线性表的定义:用数据元素的有限序列表示:(a1,a2,…ai-1,ai,ai+1,…an)
n为元素个数,即表长,n大于等于0。
n=0时称为空表
例如:(A,B,C…,Z)英文表,或是学生登记表格,可以看到这些表格中数据元素都是同类型的,且元素间的关系是线性的。
2.2线性表的顺序表示和实现
2.2.1顺序表的表示
线性表的顺序表示又被称为顺序存储结构或顺序映像。
顺序存储定义:把逻辑上相邻的数据元素存储在物理相邻的 存储单元中的存储结构。
顺序存储方法:用一组地址连续的存储单元依次存储线性表的元素。
顺序存储特点:1.逻辑上相邻的数据元素其物理上也相邻;2.若已知表中首元素在存储器中的位置,则其他元素存放位置也可以求出。
首位置为1时:
LOC(ai)=LOC(a1)+L*(i-1)
2.2.2顺序表的实现(操作)
数据结构的基本运算:
修改、插入、删除、查找、排序
1.修改 通过数组的下标便可访问某个特定元素并修改。时间效率为O(1)。
2.插入 将第n至第i位的元素向后移动一个位置;将要插入的元素写到第i个位置;表长加一;(要注意i的插入是否合法?表是否已满)。
3.删除 将第i+1至第n位的元素向前移动一个位置;表长减一;(要注意i的删除是否合法?表是否已满)。
时间效率:
T(n)=移动元素的次数(取决于插入或删除元素的位置)
插入时的平均移动次数为:n(n+1)/2*(n+1)=n/2=o(n)

空间复杂度为o(1),因为没有占有辅助空间
c语言中:参数传递只能是单向的,通过共享同一空间实现双向传递。没有取地址符号一定是输入,有取地址符号一定是输出但是不是输入得视情况而定。
顺序表的存储结构是一维数组,如果插入的元素个数超过数组定义的长度怎么办?——采用动态分配的一维数组。
动态数组:先为顺序表空间设定一个初始分配量,一旦因插入元素而空间不足时,可为顺序表增加一个固定长度的空间增量。


2.3 线性表的链式表示和实现
链表的表示
结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。每个存储结点包括两个部分:数据域和指针域。


头指针:指向链表中第一个结点
头结点:是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息,它不计入长度。
首元结点:链表中存储线性表第一个数据元素a1的结点。

本文介绍了数据结构中的线性表,包括逻辑结构、顺序存储和链式存储。顺序表使用数组实现,插入和删除操作涉及到元素移动,而链表则允许元素在内存中任意位置。顺序表操作的时间效率和空间复杂度进行了讨论,并提到了动态数组的概念。
8万+

被折叠的 条评论
为什么被折叠?



