【数据结构】复杂度、线性表、链表、堆栈、队列

看的陈越老师  浙江大学的 《数据结构》课程  ,基础不好,较艰难。例子好像是C的代码,大一学过,现在忘了,痛苦一笔。

这几天有点松懈。

2022.7.21

二分查找、分类别

2022.07.23

解决问题方法的效率,跟数据的组织方式、空间利用率、算法巧妙程度有关

循环、递归(递归特点:函数内部自己调用自己;必须有出口)

计算机不愿意跑递归,对空间占用大

一对一   线性结构

一对多   树型结构

抽象数据类型

数据类型包括:数据对象集、数据集合相关联的操作集

抽象:描述数据类型的方法不依赖于具体实现

与存放数据的机器无关

与数据存储的物理结构无关

与实现操作的算法和编程语言均无关

只描述数据对象集和相关操作集“是什么”,并不涉及“如何做到”的问题

矩阵 Matrix

二维数组   一维数组  十字链表  链表  是什么?   还没搜,就是也大概明白了点

算法的定义

时间、空间复杂度

机器运算  加减法比乘除快很多

平时关注  最坏情况复杂度,因为平均的太难把握

复杂度的渐进表示法

 最大子列和 问题     (脑瓜子 嗡嗡的

分而治之

NA not available

2022.07.25

多项式表示方法这个方法占用无效空间太多了  太多无效的0

 指数大的排在前边,小的在后边这样方便计算

 链表结构存储非零项

链表  框框(系数coef、expon指数)、向右的符号,null结尾

多项式表示问题的启示:

1.同一个问题可以有不同的表示(存储)方法

2.有一类共性问题:有序线性序列的组织和管理

线性表(Linear List)”:同类型数据元素构成有序序列的线性结构

表中元素个数称为线性表的长度。

线性表没有元素时,称为空表。

表起始位置称表头,表结束位置称表尾。

Ptrl 指针

构造新结点  malloc 申请一块新的空间

广义表(Generalized List)

广义表是线性表的推广

对于线性表而言,n个元素都是基本的单元素;

广义表中,这些元素不仅可以是单元素也可以是另一个广义表。

在C语言中,Union可以把不同类型的数据组合在一起  

多重链表:链表中的节点可能同时隶属于多个链

多重链表中结点的指针域会有多个,如前面例子包含了Next和SubList两个指针域;

但包含两个指针域的链表并不一定是多重链表,比如在双向链表不是多重链表。

多重链表有广泛的用途:

基本上如树、图这样相对复杂的数据结构都可以采用多重链表方式实现存储。

堆栈  函数、递归都要用到

后缀表达式

先进去的后出来,后进去的先拿出来

(跟计算机二级  栈 比较像)

堆栈的抽象数据类型描述

堆栈(Stack):具有一定操作约束的线性表

只在一端(栈顶,Top)做插入、删除

插入数据:入栈(Push)

删除数据:出栈(Pop)

后入先出: Last In First Out (LIFO)

做插入、删除的时候一般要判断栈是不是满

栈的顺序存储实现

栈的顺序存储结构通常由一个一维数组和一个记录栈顶元素位置的变量组成

堆栈的链式存储实现 

栈的链式存储结构实际上就是一个单链表,叫做链栈。插入和删除操作只能在链栈的栈顶进行。

链表不存在满不满的问题 (不断申请空间)

堆栈应用:表达式求值

中缀表达式求值

基本策略:将中缀表达式转换为后缀表达式,然后求值

有括号怎么办? 左括号一旦放到堆栈中,优先级最低

同优先级  从左到右

走不通的时候回到最近一次试探的状态(回溯算法)

队列及实现

队列(Queue):具有一定操作约束的线性表

插入和删除操作:只能在一端插入,而在另一端删除

队列的顺序存储实现

队列的顺序存储结构通常由一个一维数组和一个记录队列头元素位置的变量front以及一个记录队列尾元素位置的变量rear组成。

顺环队列

队列的链式存储实现

队列的链式存储结构也可以用一个单链表实现。插入和删除操作分别在链表的两头进行;队列指针front和rear应该分别指向链表的哪一头?

Next把结点串在一起

 多项式加减、乘除

C语言中函数传递是值传递的

C的语法忘了,代码看的抽象,有点艰难!!!哭了哭了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值