数据结构(26-27-1)

主讲教师: 李群 副教授 / 山东航空学院

教学进度:
  • 预报名
  • 进行中
  • 已结束

学时安排:48学时

学分:2分

数据结构是计算机科学与技术专业及其相近专业的学科基础课程,系统讲授数据结构概念、原理和应用,是解决复杂工程问题的重要基础。它所讨论的知识内容和提倡的方法,无论对进一步学习计算机领域的其它课程,还是对从事大型信息工程甚至操作系统的开发,都是非常重要的基础和保障,通过本课程的学习有助于提升学习者的算...
  • 1354609

    累计页面浏览量

  • 1315

    累计选课人数

  • 5811

    累计互动次数

08-31 15:41 李群 山东航空学院 在数据结构(26-27-1)课程中提问:

在C/C++语言里有没有办法不用指针做出链表呢?

  • 09-28 16:26 郝静茹

    可以,用静态链表。使用结构体数组保存结点,用数组下标代替指针记录后继结点位置,不需要 C/C++ 指针,就能实现链表的插入删除。缺点是数组大小预先固定。
  • 查看全部(9条)

08-31 15:41 李群 山东航空学院 在数据结构(26-27-1)课程中提问:

顺序表or链表

顺序表和链表到底孰强孰弱,你是如何看待这个问题的?

  • 09-28 16:26 郝静茹

    ✅优点

    1. 连续内存,**支持随机存取**,按下标访问元素时间复杂度\(O(1)\);
    2. 存储密度高,不需要额外空间保存指针;
    3. 局部性好,缓存命中率高,读取速度快。

    ❌缺点

    1. 插入、删除元素需要移动大量元素,时间复杂度\(O(n)\);
    2. 容量固定,需要预先分配空间,扩容麻烦,容易浪费空间或溢出。
  • 查看全部(9条)

08-31 15:41 李群 山东航空学院 在数据结构(26-27-1)课程中提问:

在线性表中查找数据可以有多快?

如果有一线性表,我们要在其中查找一个与给定值相同的元素,时间复杂度是多少?你认为最快能有多快呢?

  • 09-28 16:25 郝静茹

    线性表查找时间复杂度O(n),快速查找可接近O(logn)
  • 查看全部(40条)

08-31 20:14 李群 山东航空学院 在数据结构(26-27-1)课程中提问:

身边的栈和队列在哪里?

你能在你身边的工作或生活中,找到栈、队列的应用吗?

  • 09-24 18:09 姚庆庆

    生活中的栈(后进先出)摞盘子:后放上去的盘子,最先被拿走;浏览器后退按钮:访问页面依次压入栈,后退就弹出最近访问的页面;word 的撤销操作:每一次修改存入栈,撤销就回退最近一次操作。生活中的队列(先进先出)排队买票、食堂打饭:先来的人先办理;打印机打印任务:提交顺序打印,先提交先输出;消息聊天:接收消息按收到顺序依次展示。
  • 查看全部(4条)

08-31 20:14 李群 山东航空学院 在数据结构(26-27-1)课程中提问:

栈与队列的异同?

结合具体应用,谈谈栈与队列的相同点及区别

  • 09-24 18:08 姚庆庆

    相同点栈和队列都属于操作受限的线性表,元素都是线性排列;都只能在端点处进行插入、删除,不支持在中间位置随意增删;都可以用顺序存储(数组)或者链式存储(链表)实现。不同点栈:后进先出 LIFO,只在同一端(栈顶)做插入和删除。应用:函数递归调用、括号表达式匹配、浏览器回退、软件撤销操作。队列:先进先出 FIFO,一端入队(队尾),另一端出队(队头)。应用:任务排队、打印任务队列、消息缓冲、广度优先遍历。
  • 查看全部(4条)

08-31 14:49 李群 山东航空学院 在数据结构(26-27-1)课程中提问:

说说你在编程中使用过的或者了解的一些算法

有很多经典算法,就像计算机科学里的颗颗明珠,相信大家在学习和使用程序设计语言时已经有所应用。你使用过哪些算法或者了解哪些,跟大家一起分享一下。

  • 09-24 17:40 姚庆庆

    查找类:顺序查找、二分查找。二分查找要求有序数组,时间O(logn),查找速度很快。
  • 查看全部(4条)

08-31 14:49 李群 山东航空学院 在数据结构(26-27-1)课程中提问:

何为优秀的程序?

你认为什么样的程序称得上优秀,有哪些评判标准?

  • 09-24 17:40 姚庆庆

    满足正确性、可读性、健壮性、效率与低存储量需求
  • 查看全部(4条)

08-31 14:49 李群 山东航空学院 在数据结构(26-27-1)课程中提问:

怎样修炼自己的编程能力?

通过本章的学习,结合你的编程学习之路,谈谈你是怎样或者打算怎样提高自己的编程能力。

  • 09-24 17:39 姚庆庆

    夯实基础:吃透数据结构、算法基础,理解时间、空间复杂度,不光会写代码,更懂代码背后的逻辑,知道程序效率高低的原因。
  • 查看全部(4条)

08-31 14:49 李群 山东航空学院 在数据结构(26-27-1)课程中提问:

有多少个不同值?

编写算法,求一个整型数组中有多少个不同值。如:数组{5,3,5,2,6,1,7,3,5},不同的值有6个。你有什么办法解决该问题,能不能找到比较高效的算法?

  • 09-24 17:39 姚庆庆

    先把数组排序,排序完成后相同数字会挨在一起。遍历排序后的数组,只要当前元素不等于前一个元素,就计数加一。排序一般O(nlogn),遍历O(n),整体复杂度O(nlogn)。
  • 查看全部(4条)

08-31 20:14 李群 山东航空学院 在数据结构(26-27-1)课程中提问:

高级语言中的栈、队列

如果你了解一些面向对象语言,比如java、C++、python,那你能说说这些语言中的栈、队列如何使用吗?

  • 09-10 21:01 焦钰涵

    C++ 中使用std::stack和std::queue,通过 push、pop 等方法操作栈和队列;Java 提供Stack类与Queue接口完成栈、队列操作;Python 没有内置栈队列类型,常用 list 模拟栈,collections.deque实现高效队列。栈都遵循后进先出,队列遵循先进先出。
  • 查看全部(3条)

常见问题

  • 1.我该如何学习这门课程?

    (1)首先您要注册一个学银在线的账号。

    (2)您需要有一定的上网条件,能够流畅的观看教学视频。在观看的过程中,您可以选择在PC端登陆我们的网页, 也可以选择下载我们的app学习通,通过手机客户端来学习。

    (3)您一旦报名选择了课程,我们的课程主讲老师或课程团队会通过通知的形式给您发送课程有关的消息,同时会抄送您的邮箱,请您及时查收。

  • 2.我在学习过程中遇到问题了,怎么办?

    您可以通过以下几种方式获取帮助:

    (1)在课程群聊中发布求助信息,说不定和你一起学习这门课的小伙伴就能够解决你的问题呢;

    (2)在课程讨论区留言,课程团队看到后将会及时回复。

    (3)联系我们的客服,或者随时给我们发邮件,邮箱地址:xueyinkf@chaoxing.com。

  • 3.我是新手,能否给我一些学习建议?

    (1)我们的课程采用MOOC的方式授课,因此您可以自由安排您的学习时间、学习地点。但我们仍旧希望您每周能都有固定的时间持续进行本课程的学习,根据人的记忆曲线显示这种规律的学习方式能够最大限度的提升您的学习质量。

    (2)学习的过程比较容易,为了检验您的学习成果,我们的课程团队会在课程章节结束后布置测验或作业,希望您尽可能的按时独立完成。如果有没有掌握的知识点,您可以继续回看复习课程。

    (3)希望您能够积极参与课程的讨论,与各位学习者一起煮酒论英雄。在讨论的过程中,不光可以对课程所学内容温习内化,还能互相碰撞出思想的火花,相信您一定会有额外的收获。

  • 4.课程会不会很难、很枯燥?

    (1)我们的课程都是老师经过精心设计拍摄制作而成,并且由于是MOOC的方式,所以课程拆分成了不同的知识点,学习起来一点也不费劲。

    (2)我们的课程多采取理论结合实际的授课方式,课程中也有许多案例的呈现,相信会给学习者带来诸多方面的启发。我们也将力求做到深入浅出,支持学习者将研究发现转化为实践,改进自身教学。