数据结构学习(一)

写在前面

为了缓和看论文找创新点的焦虑感,本菜鸡决定每次自我动摇时学一学数据结构。看的视频是某站华科老师的录屏,参考教材是严蔚敏老师的数据结构(C版)。博主(根据自己的理解)只做入门学习不做深入理解,各位大佬高抬贵手~

绪论

基本概念和术语

在生活中很多问题不再是数值计算的数学方程,而是诸如表、树和图之类的数据结构。数据结构是数学、算法和硬件的交集,是一门重要的学科。
数据结构学习(一)_第1张图片

数据:所有能输入到计算机中且能被处理的符号总称,例如图像、声音等。
数据元素:是数据的基本单元,例如整型数、字符串等;数据项是数据的最小单位。
数据对象:性质相同的数据元素的集合,是数据的子集。
数据结构:互相之间存在一种或多种特定关系的数据元素的集合。

(ps:努力看了原教材,由于c不过关很多术语看不懂,打算直接莽后面,打算看完视频回过头来再研读)

数据结构学习(一)_第2张图片

线性结构的定义:若结构为非空有限集,只有一个起点和终端结点,并且所有结点都只有一个前驱和后继。线性结构反应结点间的逻辑关系是一对一的。典型的线性结构包括:线性表、堆栈、字符串、数组等。

第二章 线性表

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)
数据结构学习(一)_第3张图片
空间复杂度为o(1),因为没有占有辅助空间

c语言中:参数传递只能是单向的,通过共享同一空间实现双向传递。没有取地址符号一定是输入,有取地址符号一定是输出但是不是输入得视情况而定。

顺序表的存储结构是一维数组,如果插入的元素个数超过数组定义的长度怎么办?——采用动态分配的一维数组。

动态数组:先为顺序表空间设定一个初始分配量,一旦因插入元素而空间不足时,可为顺序表增加一个固定长度的空间增量。
数据结构学习(一)_第4张图片
数据结构学习(一)_第5张图片

2.3 线性表的链式表示和实现

链表的表示

结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。每个存储结点包括两个部分:数据域和指针域。
数据结构学习(一)_第6张图片
数据结构学习(一)_第7张图片
头指针:指向链表中第一个结点
头结点:是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息,它不计入长度。
首元结点:链表中存储线性表第一个数据元素a1的结点。
数据结构学习(一)_第8张图片

你可能感兴趣的:(数据结构,数据结构,链表)