烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
本文是针对数据结构基础系列网络课程(3):栈和队列的实践项目。 【项目 - 负数把正数赶出队列】 设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0时,ai进队,当ai<0时,将队首元素出队,当ai=0时,表示输入结束。要求将队列处理成环形队列,使用算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接写在mai
本文是针对数据结构基础系列网络课程(3):栈和队列的实践项目。 【项目 - 排队看病模拟】 编写一个程序,反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事: (1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。 (2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。 要求模拟病人等待就诊这一过程。程序采用菜单
【说明】本文来自由周世平老师主编的《C语言程序设计》教材。我作为参编人员执笔了第7、8章。“第8章 问题求解与算法”中“8.6.1 回溯法”以8皇后问题的求解为例,介绍了回溯法的解题过程。这个解决方案中用到了“栈”,引用至此,作为栈应用的例子。需要说明的是,教材面向程序设计初学者,并全文中并未提出过任何关于“栈”的描述。这样做,隐藏了术语,减少初学者的认知难度。对于数据结构的
【说明】 本文是《数据结构》翻转课堂在线答疑的实录,由云班课的“答疑/讨论”功能中导出数据整理而成。
【说明】 本文是《数据结构》翻转课堂在线答疑的实录,由云班课的“答疑/讨论”功能中导出数据整理而成。 【重要提示】 下面的内容,按时间从后往前的顺序提供,请直接到文章末尾,倒着看更顺畅。 【知识点答疑】 赵鹤2015-09-21 16:38:25 头插法为什么首节点不是后来插入的节点 贺利坚2015-09-21 17:13:56 后加入的成头了。 赵鹤201
【说明】 本文是《数据结构》翻转课堂在线答疑的实录,由云班课的“答疑/讨论”功能中导出数据整理而成。
【说明】 本文是《数据结构》翻转课堂在线答疑的实录,由云班课的“答疑/讨论”功能中导出数据整理而成。。 【重要提示】 下面的内容,按时间从后往前的顺序提供,请直接到文章末尾,倒着看更顺畅。 【课程实践答疑实录】 焦梦真2015-09-20 11:19:20说 太难了 贺利坚2015-09-20 11:25:48答 练就将军本色之时到了。待回头看,江山本
【说明】 本文是《数据结构》翻转课堂在线答疑的实录,由云班课的“答疑/讨论”功能中导出数据整理而成。
【说明】 本文是《数据结构》翻转课堂在线答疑的实录,由云班课的“答疑/讨论”功能中导出数据整理而成。第一周的答疑,由于不熟悉平台的缘故,没有做到全部答复。 【重要提示】 下面的内容,按时间从后往前的顺序提供,请直接到文章末尾,倒着看更顺畅。 【课程内容答疑实录】 贺利坚2015-09-14 12:17:00 很多还是需要原来的知识,好多都有些忘记了。。。。
【来信】 贺老师,你好: 我是Y大一名化学工程与工艺专业的新生。当时报考这个专业的时候,并未有太多了解。直到被录取,才查找这个专业的相关信息,完全傻了,网上是百般唾骂啊,这个专业真有这么烂?Y大这个专业咋样啊,深深怀疑,尽管是个一本!想好好学习的心,完全被冰封! 【回信】 收到你的来信,我的心情也十分沉重。 不是因为你的专业。这可以是一个很有前途的专业,
【来信】 我是一名研二学生,我现在学习C#,老师能不能推荐一些视频教程。我看你的CSDN上没有C#相关的资料啊。多谢老师。因为我之前一些在学习C++,所以才认识老师的,当时我还在CSDN上付费买了相关视频。但是因为我换了导师,现在不得不换成学习C#了。期待老师的指导。
【来信】 贺老师,您好!请问怎么在博客上积累代码量呢?我在用博客,也尝试着写些东西,但是不知道怎么弄。希望您能指点一下迷津。 【回复】 我的学生是将要作业发布为博客。而对于你,可以是写一个程序,就发一篇博文,不必刻意地为了发博文而写什么。从这个意义上讲,关键的是,将自己的实践进行下去,顺便地,博文就有了,代码的积累也就看出来了,对自己的学习带来的种种正面激励也就
2015年9月23日晚7点,CSDN学院在线公开课《与迷茫相伴的IT成长路》,分享PPT。讲座视频在[点击链接(待加)]
【来信】 尊敬的贺老师,我看了您的C++程序设计课觉得很有启发,对于第九周项目设计我有一个想法。怎么用程序实现安装进度百分比与进度条之间结合小程序。如: 不知道应该怎样实现,还请老师点播一二。 【回信】 我不知你看的是哪一级的版本,不过这个无所谓。 参考http://blog.csdn.net/sxhelijian/article/details/
本文是针对数据结构基础系列网络课程(3):栈和队列的实现项目。 【项目 - 后缀表达式】 利用sqstack.h中栈的基本运算,实现将一个中缀表达式转换为对应的后缀表达式的算法。例如,输入(56-20)/(4+2),输出后缀表达式::56#20#-4#2#+/要求在数字后加#。 参考解答说明: 原理见视频 栈的应用1-表达式求值,还可以参考表达式求值的
本组项目针对《数据结构基础系列(3):栈和队列》中的1-6课: 1 “栈和队列”导学 2 栈的定义 3 栈的顺序存储结构及其基本运算实现 4 栈的链式存储结构及其基本运算的实现 5 栈的应用1-表达式求值 6 栈的应用2-迷宫问题 【项目1 - 建立顺序栈算法库】 定义顺序栈存储结构,实现其基本运算,并完成测试。 要求: 1、头文件sqstac
STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可
本文是针对数据结构基础系列网络课程(3):栈和队列的实现项目。 【项目 - 数制转换】 把十进制的整数转换为任一进制数输出。请利用栈设计算法,并实现程序。 提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了…… [参考解答] 解
本文是针对数据结构基础系列网络课程(3):栈和队列的实践项目。 【项目 - 括号的匹配】 假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 例如,输入2+(3+4)*2+{[3]}-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。 提示: (1)遇到左括号入栈,遇到右括号后
本文针对数据结构基础系列网络课程(4):串中第4课时串的顺序存储及其基本操作实现。 按照“0207将算法变程序”[视频]部分建议的方法,建设自己的专业基础设施算法库。 顺序串算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:sqString.h,包含定义顺序串数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef SqString_H_INC
本文针对数据结构基础系列网络课程(4):串中第4课时串的链式存储及其基本操作实现。 按照“0207将算法变程序”[视频]部分建议的方法,建设自己的专业基础设施算法库。 链串算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:liString.h,包含定义链串数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef LISTRING_H_INCLU
本文针对数据结构基础系列网络课程(3):栈和队列中第11课时队列的应用-迷宫问题。 例:求出从入口到出口的路径 代码: #include <stdio.h> #define MaxSize 100 #define M 8 #define N 8 int mg[M+2][N+2]= { {1,1,1,1,1,1,1,1,1,1}, {1,
本文针对数据结构基础系列网络课程(3):栈和队列中第6课时栈的应用2-迷宫问题。 例:求出从入口到出口的路径 程序实现: #include <stdio.h> #define MaxSize 100 #define M 8 #define N 8 int mg[M+2][N+2]= { {1,1,1,1,1,1,1,1,1,1},
本文针对数据结构基础系列网络课程(3):栈和队列中第5课时栈的应用1-表达式求值。 例:用户输入一个包含“+”、“-”、“*”、“/”、正整数和圆括号的合法数学表达式,计算该表达式的运算结果。 解答: #include <stdio.h> #include <stdlib.h> #define MaxOp 100 #define Max
本文针对数据结构基础系列网络课程(3):栈和队列中第10课时队列的链式存储结构及其基本运算的实现。 按照“0207将算法变程序”[视频]部分建议的方法,建设自己的专业基础设施算法库。 链队算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:liqueue.h,包含定义链队数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef LI
本文针对数据结构基础系列网络课程(3):栈和队列中第9课时环形队列的存储及基本操作。 按照“0207将算法变程序”[视频]部分建议的方法,建设自己的专业基础设施算法库。 下图是数据存储结构设计及各种操作实现的要点: 顺序环形队列算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:sqqueue.h,包含定义顺序环形队列数据结构的代码、宏定义、
本文针对数据结构基础系列网络课程(3):栈和队列中第4课时栈的链式存储结构及其基本运算实现。 按照“0207将算法变程序”[视频]部分建议的方法,建设自己的专业基础设施算法库。 链栈算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:listack.h,包含定义链栈数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef LISTA
本文针对数据结构基础系列网络课程(3):栈和队列中第3课时栈的顺序存储结构及其基本运算实现。 按照“0207将算法变程序”[视频]部分建议的方法,建设自己的专业基础设施算法库。 顺序栈算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:sqstack.h,包含定义顺序栈数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef SQSTA
有学生调程序,是要建顺序表。 他的程序是这样的: #include <stdio.h> #include <malloc.h> #define MaxSize 50 //Maxsize将用于后面定义存储空间的大小 typedef int ElemType; //ElemType在不同场合可以根据问题的需要确定,在此取简单的in
【前言】 好久没有收到有深度的学生来信了。这与自己近一年来,忙于建设在线教学资源的缘故,没有时间动笔针对大学生学习中的问题,专门写指导性文章有关。没有了“引子”,IT学子指导专栏有些冷清。 收到了某大学小谭同学的来信“致神交已久的贺利坚老师”,照例回复,并发布博文。 【来信】 (一)自我介绍 首先还是应该自我介绍一下,我是XX大学软件工程(服务外包)
前言 自从下决心要解决学生动手能力差的问题,开始了课程实践资源的建设之旅;自迷上了翻转课堂,所教课程的视频,也就逐渐形成了体系。在为我自己的校内学生服务的同时,也希望能够让更多人有机会用到。 自全身心投入教学,收入、奖金的渠道也便收缩到了极致。接受CSDN学院商业运作的规则,将课程投放此处,一则创收一些,弥补付出数倍精力建设资源而只能喝大锅饭中稀粥中的不平衡,二则
本文针对数据结构基础系列网络课程(2):线性表的实践项目。 【项目 - 猴子选大王】 一群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。输入m和n,输出为大王的猴子是几号。 提示: (1)链表解法:可以用一个循环单链表来
本文针对数据结构基础系列网络课程(2):线性表的实践项目。 【项目- 循环双链表应用】 设非空线性表ha和hb都用带头节点的循环双链表表示。设计一个算法Insert(ha,hb,i)。其功能是:i=0时,将线性表hb插入到线性表ha的最前面;当i>0时,将线性表hb插入到线性表ha中第i个节点的后面;当i大于等于线性表ha的长度时,将线性表hb插入到线性表ha的
本文针对数据结构基础系列网络课程(2):线性表的实践项目。 【项目 - 多项式求和】 用单链表存储一元多项式,并实现两个多项式的加法。 提示: 1、存储多项式的数据结构 多项式的通式是pn(x)=anxn+an−1xn−1+...+a1x+a0p_n(x)=a_nx^n+a_{n-1}x^{n-1}+...+a_1x+a_0。n次多项式共有n+1项。
本组项目针对《数据结构基础系列(2):线性表》课程第8-15节 8. 线性表的链式存储 9. 建立单链表 10. 单链表基本操作的实现 11. 单链表应用举例 12. 双链表 13. 循环链表 14. 线性表的应用 15. 有序表 【项目1 - 建立单链表】 定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。 请
本文针对数据结构基础系列网络课程(2):线性表中第15课时有序表。 问题:有两个有序表LA和LB,将它们合并成一个有序表LC。要求不破坏原有表LA和LB 算法思想: 解法1:用顺序表实现(支持的算法库,及list.h文件,请点击链接…) #include "list.h" void UnionList(SqList *LA,SqList *LB,SqList *&a
本文针对数据结构基础系列网络课程(2):线性表中第13课时循环链表。 按照“0207将算法变程序”[视频]部分建议的方法,建设自己的专业基础设施算法库。 双链表算法库算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:cdlinklist.h,包含定义双链表数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef CDLINKLIS
本文针对数据结构基础系列网络课程(2):线性表中第13课时循环链表。 按照“0207将算法变程序”[视频]部分建议的方法,建设自己的专业基础设施算法库。 双链表算法库算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:clinklist.h,包含定义双链表数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef CLINKLIST_H_
本文针对数据结构基础系列网络课程(2):线性表中第14课时线性表的应用。 问题:有表A,m1行、n1列,表B,m2行、n2列,求A和B的自然连接结果C 例: 解答: #include <stdio.h> #include <malloc.h> #define MaxCol 10 //最大列数 typedef int Ele
本文针对数据结构基础系列网络课程(2):线性表中第12课时双链表。 按照“0207将算法变程序”[视频]部分建议的方法,建设自己的专业基础设施算法库。 双链表算法库算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:dlinklist.h,包含定义双链表数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef DLINKLIST_H
本文针对数据结构基础系列网络课程(2):线性表的实践项目。 【项目 - 单链表算法】(程序中利用了已经实现的单链表算法,头文件LinkList.h及其中函数的实现见单链表算法库) 1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。
本文针对数据结构基础系列网络课程(2):线性表中第11课时单链表应用举例。 例:拆分单链表 (linklist.h是单链表“算法库”中的头文件,详情单击链接…) #include <stdio.h> #include <malloc.h> #include "linklist.h" void split(LinkList *&L,Lin
本文针对数据结构基础系列网络课程(2):线性表中第10课时单链表基本操作的实现,建立单链表数据存储结构基本操作的算法库。 按照“0207将算法变程序”[视频]部分建议的方法,建设自己的专业基础设施算法库。 单链表算法库算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:linklist.h,包含定义顺序表数据结构的代码、宏定义、要实现算法
本文是数据结构基础系列网络课程(2):线性表中第9课时建立单链表中所讲的例程。 【例程】 定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。 #include <stdio.h> #include <malloc.h> typedef int ElemType; typedef struct LNode
本文是数据结构基础系列网络课程(2):线性表中第6课时线性表顺序存储的应用中所讲的例程。 例:删除元素 问题:已知长度为n的线性表A采用顺序存储结构,设计算法,删除线性表中所有值为x的数据元素。 要求:时间复杂度为O(n)、空间复杂度为O(1)的算法 解法0:用基本运算实现,不满足复杂度要求 (注:本文中所需要的list.h和list.cpp见点击
【项目 - 顺序表应用】 定义一个采用顺序结构存储的线性表,设计算法完成下面的工作: 1、删除元素在[x, y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1); 2、将所在奇数移到所有偶数的前面,要求算法的时间复杂度为O(n),空间复杂度为O(1)。 提示: (1)充分利用前面建立的算法库解决建立顺序表、输出线性表的问题;
【项目 - 求集合并集】 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。设计算法,用函数unionList(List LA, List LB, List &LC )函数实现该算法,求一个新的集合C=A∪B,即将两个集合的并集放在线性表LC中。 提示: (1)除了实现unnionList函
本组项目针对《数据结构基础系列(2):线性表》课程第1-7节 1. 导学 2. 线性表的逻辑结构与基本运算 3. 线性表的顺序存储结构 4. 创建线性表的实现(暨参数类型的讨论) 5. 顺序表基本运算的实现 6. 线性表顺序存储的应用 7. 实践指导:用程序实践算法 【项目1 - 顺序表的基本运算】 领会“0207将算法变程序”部分建议的方法,将
学习《数据结构》课程的过程中,同步开展实践。对每一种逻辑结构,实现其各种存储结构下的基本运算,是一项基础性的工作。学习方法建议请参考“0207将算法变程序”[视频]部分建议的方法 本文为算法库中的第一个,针对线性表中的顺序存储结构,实现各种基本运算。 算法库包括两个文件: 头文件:list.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的
刚看完李晓明老师新出的《慕课》。书中第6章第8段还讲到了我“混搭”平台的案例。书很薄,但信息量不少,两个碎片时间,1小时看完。书中内容是基于李老师这几年在不同场合的演讲整理而成的,李氏演讲风格明鲜,都是干货。他结合各方的疑虑,从国家/社会、学校、教师、学生等多角度,对慕课剖析了个透彻,对慕课的管理/运作、制作、运用、学习,也都有所涉及。对于我这个对慕课已经有一定了解,也关心