烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
本文是针对[数据结构基础系列(7):图]的实践。 【项目 - 操作用邻接表存储的图】 假设图G采用邻接表存储,分别设计实现以下要求的算法: (1)输出出图G中每个顶点的出度; (2)求出图G中出度最大的一个顶点,输出该顶点编号; (3)计算图G中出度为0的顶点数; (4)判断图G中是否存在边<i,j>。 利用下图作为测试用图,输出结果。 提示:(1
本文是[数据结构基础系列(7):图]中第13课时[从一个顶点到其余各顶点的最短路径]的例程。 (程序中graph.h是图存储结构的“算法库”中的头文件,详情请单击链接…) #include <stdio.h> #include <malloc.h> #include "graph.h" #define MaxSize 100 void Ppat
本文是[数据结构基础系列(7):图]中第12课时[最小生成树的克鲁斯卡尔算法]的例程。 (程序中graph.h是图存储结构的“算法库”中的头文件,详情请单击链接…) #include <stdio.h> #include <malloc.h> #include "graph.h" #define MaxSize 100 typedef stru
本文是[数据结构基础系列(7):图]中第11课时[最小生成树的普里姆算法]的例程。 (程序中graph.h是图存储结构的“算法库”中的头文件,详情请单击链接…) #include <stdio.h> #include <malloc.h> #include "graph.h" void Prim(MGraph g,int v) { i
【来信】 您好!我是学计算机的一名大二女生,大一基础学得不好,不注重专业学习,也不知道自己到底喜不喜欢这个专业,浑浑噩噩的就过去一年了,大二想补回来,说不清楚喜不喜欢,适不适合当程序员,但我觉得还是要好好学好专业知识,提高编程能力,在对它有更多的了解之后再判定这些纠结的问题。 最近加入了我们学院的ACM实验室,开始刷acm的基础题目,也想开始发表csdn博客,见
本文是[数据结构基础系列(7):图]中第9课时[BFS的应用]的例程。 (程序中graph.h是图存储结构的“算法库”中的头文件,详情请单击链接…) 1、最短路径 问题:求不带权连通图G中从顶点u到顶点v的一条最短路径。 #include <stdio.h> #include <malloc.h> #include "graph.h" typ
本文是[数据结构基础系列(7):图]中第8课时[图的邻接矩阵存储结构及算法]的例程。 (程序中graph.h是图存储结构的“算法库”中的头文件,详情请单击链接…) 1、是否有简单路径? 问题:假设图G采用邻接表存储,设计一个算法,判断顶点u到v是否有简单路径。 #include <stdio.h> #include <malloc.h> #i
本文是[数据结构基础系列(7):图]中第7课时[非连通图的遍历]的例程。 (程序中graph.h是图存储结构的“算法库”中的头文件,详情请单击链接…) 1、非连通图的深度优先遍历——DFS #include <stdio.h> #include <malloc.h> #include "graph.h" int visited[MAXV];
本文是[数据结构基础系列(7):图]中第6课时[图的遍历]的例程。 1、深度优先遍历——DFS(程序中graph.h是图存储结构的“算法库”中的头文件,详情请单击链接…) #include <stdio.h> #include <malloc.h> #include "graph.h" int visited[MAXV]; void DFS(ALG
本文是[数据结构基础系列(7):图]中第4课时[图的邻接矩阵存储结构及算法]和第5课时[图的邻接表存储结构及算法],并为后续内容的实践提供支持。 图的存储结构主要包括邻接矩阵和邻接表,本算法库提供存储结构的定义,以及用于构造图存储结构、不同结构的转换及显示的代码。算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:graph.h,包含定义图数据
本文是[数据结构基础系列(7):图]中第4课时[图的邻接矩阵存储结构及算法]的例程。 #include <stdio.h> #include <malloc.h> #define MAXV 100 /*最大顶点数设为100*/ #define LIMITLESS 9999 typedef struct { int no;
本文针对数据结构基础系列(6):树和二叉树第7, 11-15课时 7 二叉树与树、森林之间的转换 11 二叉树遍历非递归算法 12 层次遍历算法 13 二叉树的构造 14 线索二叉树 15 哈夫曼树 【项目1 - 二叉树算法验证】 运行并重复测试教学内容中涉及的算法。改变测试数据进行重复测试的意义在于,可以从更多角度体会算法,以达到逐渐掌握算法的程度。使用
本文是针对数据结构基础系列(6):树和二叉树的配套实践。 【项目 - 用二叉树求解代数表达式】 用二叉树来表示代数表达式,树的每一个分支节点代表一个运算符,每一个叶子节点代表一个运算数(为简化,只支持二目运算的+、-、*、/,不加括号,运算数也只是一位的数字字符。本项目只考虑输入合乎以上规则的情况)。请设计算法,(1)根据形如“1+2∗3−4/5 1+2*3-4/5”
【学生留言】 老师,您好!大二的时候买了您出版的逆袭大学这本书,觉得很受用。我现在呢,已经是一名大三的女生。我的代码能力还勉强可以,数据结构书上的代码基本都实现了,也参加了ACM大赛。我想考研,可是现在正在学习的操作系统这门课,让我真的是找不到头绪,都是枯燥的原理,文字。看了跟没看差不多,也不知道学来怎么用。根本找不到学习这门课的方法,令人苦恼,这是一门考研必考科,学得
本文针对[数据结构基础系列(6):树和二叉树]第1-6, 8-10课时 1 树结构导学 2 树的基本概念 3 树的基本术语 4 树的性质 5 树的存储结构 6 二叉树概念和性质 8 二叉树的存储结构 9 二叉树的基本运算及其实现 10 二叉树的遍历 【项目1 - 二叉树算法库】 定义二叉树的链式存储结构,实现其基本运算,并完成测试。 要求:
【来信】 贺老师: 你好!这两天看了您的书—《逆袭大学,传给IT学子的正能量》。书中的兴趣与专业的话题真的让我有所感悟,还有其他指导性的章节,我多么希望我大一时候就能看到这本书,那我现在应该就不会有这么多困扰了! 我是江西某大学大三计算机科学与技术的学生,我们学校是一个普通的211院校,计算机专业排名也不怎么靠前,院里也没有计算机相关的实验室,我觉得我们实践特别
做学生的成长指导已经有些时间,近两年在教学技术方面的进步,也逐渐出现了一些机会,做些教师发展的咨询和指导工作。去做完全成年人的工作,我在前几年讲是刻意避免的,因此放弃了不少机会。改变人很难,因此我选择的对象是涉世未深的青年,而不是老于世故的成年人。 然而,影响教师,对教育的促进力度更大。新的机会,不是在体制内随行入市,而是打着擦边球,依靠着从组织上已经行动起来的群体去做工作,原先避不开的
本文是数据结构基础系列(6):树和二叉树中第15课时哈夫曼树的例程。 #include <stdio.h> #include <string.h> #define N 50 //叶子结点数 #define M 2*N-1 //树中结点总数 //哈夫曼树的节点结构类型 typedef struct { char d
本文是数据结构基础系列(6):树和二叉树中第14课时线索二叉树的例程。 #include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef char ElemType; typedef struct node { ElemType data; int ltag
本文是数据结构基础系列(6):树和二叉树中第13课时二叉树的构造的例程。 1.由先序序列和中序序列构造二叉树 定理:任何n(n≥0)个不同节点的二叉树,都可由它的中序序列和先序序列唯一地确定。 证明(数学归纳法) 基础:当n=0时,二叉树为空,结论正确。 假设:设节点数小于n的任何二叉树,都可以由其先序序列和中序序列唯一地确定。 归纳:已知某棵二叉树具有n(n>0)个不
本文是数据结构基础系列(6):树和二叉树中第11课时二叉树遍历非递归算法和第12课时层次遍历算法的例程。 问题:设计算法输出从根节点到每个叶子节点的路径之逆。 解法1:利用二叉树后序遍历非递归算法中,每一个叶子节点出现时,栈中从栈顶到栈底,正好是叶子节点到根节点的逆序的性质编写。 [参考解答](btreee.h见算法库) #include <stdio.h&
本文是数据结构基础系列(6):树和二叉树中第12课时层次遍历算法的例程。 【二叉树的层次遍历算法】 实现二叉树的层次遍历算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。 请利用二叉树算法库。 [参考解答](btreee.h见算法库) #include <stdio.h> #i
本文是数据结构基础系列(6):树和二叉树中第11课时二叉树遍历非递归算法的例程。 【二叉树遍历的非递归算法】 实现二叉树的先序、中序、后序遍历的非递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。 请利用二叉树算法库。 [参考解答](btreee.h见算法库) #include <stdio.h
本文是数据结构基础系列(6):树和二叉树中第10课时二叉树的遍历的例程。 【利用二叉树遍历思想解决问题】(请利用二叉树算法库) 假设二叉树采用二叉链存储结构存储,分别实现以下算法,并在程序中完成测试: (1)计算二叉树节点个数; (2)输出所有叶子节点; (3)求二叉树b的叶子节点个数 (4)设计一个算法Level(b,x,h),返回二叉链b中
本文是数据结构基础系列(6):树和二叉树中第10课时二叉树的遍历的例程。 【二叉树遍历的递归算法】 实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。 请利用二叉树算法库。 [参考解答](btreee.h见算法库) #include <stdio.h
本文是数据结构基础系列(6):树和二叉树中第9课时二叉树的基本运算及其实现的例程。 二叉树的链式存储算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:btree.h,包含定义二叉树的链式存储数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef BTREE_H_INCLUDED #define BTREE_H_INCLUDED #d
本文是数据结构基础系列(6):树和二叉树中第5课时树的存储结构的例程。 例: 以孩子-兄弟链作为存储结构,求树的高度 源程序:【说明——函数TreeCreate仅创建了如上图所示的图,不具有通用性。】 #include <stdio.h> #include <malloc.h> typedef char ElemType; typedef s
本文针对 [数据结构基础系列网络课程(5):数组和广义表] 1. 数组的基本概念与存储结构 2. 特殊矩阵的压缩存储 3. 稀疏矩阵的三元组表示 4. 稀疏矩阵的十字链表表示 5. 广义表 6. 广义表的存储结构及基本运算的实现 【项目1 - 猴子选大王(数组版)】 一群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。从第1只开始数,
本文针对数据结构基础系列网络课程(5): 数组与广义表的实践项目。 【项目 - 猴子选大王(数组版)】 一群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,最后一只出圈的猴子为大王。输入m和n,输出猴子离开圈子的顺序,从中也可以看出最后为大王是几号猴子。 要求采用数组作为
家住校外不便于使用学校的期刊数据库,于是委托一位学生帮助,通过校园网下载几篇中国知网上的文章。他发来的邮件是这样的: 顺利地完成了任务,我给出了回信: 意外地,收到学生的回信,是这样写的: 这才想起有很长时间,没有费劲要求学生写规范的邮件了,包括今年跟我做毕业设计的学生。陷入疲态真是可怕!收一封信,就罗嗦地教人一番,的确也吃不消。
带学生将互联网用于学习已经几个年头了。大一的学生就通过发博客,积累代码行。以此,打开了了解行业的窗口。有些同学注意到了发博客时,还可以查看“源文件”,了解到了HTML,然后开始尝试自己写标记,做一些特殊的处理。 这是未来专业人员可以尝试做的事。 CSDN推出了markdown编辑器。markdown在2013年写作《逆袭大学》时就用过,的确作为轻量级的写作平台
收到一封邮件: 尊敬的客户, 我们的系统检测到高容量从信箱发起的消息。为了您的安全,我们已经暂时封锁您的帐户发送或接收新邮件。 点击这里解锁您的帐户(链接) 有图为证: 大概知道是怎么回事。 好玩点链接玩一下: 你看更是回事了。 收到这样的邮件,真不要当真。 第一个图片,看发件人(anita.kruck@f
【来信】 贺老师: 您好,我是江西XX大学机械专业大三的学生。一次上csdn时偶然看到你写的文章便关注了你。大二学习C语言时,发现自己对计算机很感兴趣,但过了计算机二级以后就没怎么写C语言,后来又自学MATLAB和Python语言,现在学习Python四个多月了,感觉Python虽然入门简单但学好仍然要花很多时间。为了学习写Python爬虫程序,我又学习了HTML和C
《数据结构》课程确定采用翻转课堂试点,目标就是以同学们的“学”为核心,设计整个的教学流程。其中,以实践为主线的学习,是重中之重。 在此过程中,每周课前的学习方案和涉及所有知识点的视频、课后的实践项目、以及课堂中有针对性的教学活动,形成了我们学习中的三个环节。课前和课后的内容,目标是同学们的自主学习,而每周一次的课堂,则成为了整个环节中的中轴,要承担起对其他两个环节的
本文针对数据结构基础系列网络课程(4):串。 1. 串的基本概念及导学 2. 串的顺序存储及其基本操作实现 3. 串的顺序存储应用 4. 串的链式存储及其基本操作实现 5. 串的模式匹配(Brute-Force算法) 6. 串的模式匹配(KMP算法) 【项目1 - 建立顺序串的算法库】 定义顺序串的存储结构,实现其基本运算,并完成测试。 要求
本文针对数据结构基础系列网络课程(4):串实践项目。 【项目 - 计数的模式匹配】 采用顺序结构存储串,编写一个算法计算指定子串在一个字符串中出现的次数,如果该子串不出现则为0。 提示:无论BF模式匹配算法,还是KMP算法,都是在找到子串substr后就退出了。解决这个问题,要查找完整个字符串,并将出现的次数记下来。改造这两个算法吧。 [参考解答](头文件
本文针对数据结构基础系列网络课程(4):串实践项目。 【项目-字符串加密】 一个文本串可用事先编制好的字符映射表进行加密。例如,设字符映射表为: abcdefghijklmnopqrstuvwxyz ngzqtcobmuhelkpdawxfyivrsj 则字符串“lao he jiao shu ju jie gou”被加密为“enp bt umnp xb
本文针对数据结构基础系列网络课程(4):串实践项目。 【项目 - 顺序串算法】 采用顺序存储方式存储串,实现下列算法并测试: (1)试编写算法实现将字符串S中所有值为c1的字符换成值为c2的字符: void Trans(SqString *&s, char c1, char c2); (2)试编写算法,实现将已知字符串所有字符倒过来重新排列。如ABCDEF改
本文针对数据结构基础系列网络课程(5):数组与广义表的实践项目。 【项目 - 压缩存储的对称矩阵的运算】 设计算法,实现两个用压缩形式存储的对称矩阵A和B的加法和乘法。实现中请使用好前面设计的基本运算。 [参考解答] #include <stdio.h> #define N 4 #define M 10 int value(int a[],int i,i
本文针对数据结构基础系列网络课程(5):数组与广义表的实践项目。 【项目 -广义表的原子统计】 设计算法,求出给定广义表g中的原子个数和最大原子 [参考解答] (头文件glist.h是广义表算法库建设的成果,见链接…) #include <stdio.h> #include "glist.h" int atomnum(GLNode *g) //求广义表
本文针对数据结构基础系列网络课程(5):数组与广义表中第6课时广义表的存储结构及基本运算的实现。 广义算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:glist.h,包含定义广义表数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef GLIST_H_INCLUDED #define GLIST_H_INCLUDED typedef char
本文针对数据结构基础系列网络课程(5):数组与广义表中第4课时稀疏矩阵的十字链表表示。 下面的程序中,实现了创建并显示十字链表的算法。 #include <stdio.h> #include <malloc.h> #define M 3 //矩阵行 #define N 3
本文针对数据结构基础系列网络课程(5):数组与广义表的实践项目。 【项目 - 稀疏矩阵相加】 采用三元组存储稀疏矩阵,设计两个稀疏矩阵相加的运算算法 提示1:两个行数、列数相同的矩阵可以相加 提示2:充分利用已经建立好的算法库解决问题 [参考解答1](程序中使用的头文件”tup.h”见稀疏矩阵的三元组表示算法库) #include <stdio.
本文针对数据结构基础系列网络课程(5):数组与广义表中第3课时稀疏矩阵的三元组表示。 稀疏矩阵的三元组表示相关的算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:tup.h,包含定义稀疏矩阵的三元组表示数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef TUP_H_INCLUDED #define TUP_H_INCLUDED #def
本文针对数据结构基础系列网络课程(5):数组与广义表中第2课时特殊矩阵的压缩存储。 问题:用压缩形式存储对称矩阵,实现下面的操作并测试 void Init(int *&b);//为N阶对称矩阵初始化存储数据的一维数组b int Value(int b[], int i, int j);//返回存储在b[M]中,对应二维数组A[i][j]的值 void A
本文针对数据结构基础系列网络课程(4):串中第5课时串的模式匹配(KMP算法)。 问题:串的模式匹配 KMP算法: #include <stdio.h> #include "sqString.h" void GetNext(SqString t,int next[]) /*由模式串t求出next值*/ { int j,k; j=0;
本文针对数据结构基础系列网络课程(4):串中第5课时串的模式匹配(Brute-Force算法)。 问题:模式匹配,设有主串s和子串t,在主串s中找到一个与子串t相等的子串。 解答:(头文件sqstring.h见顺序串算法库) #include <stdio.h> #include "sqString.h" int index(SqString s,SqS
本文针对数据结构基础系列网络课程(4):串中第3课时串的顺序存储应用。 例1:串比较 问题: 设计实现串比较运算的算法 算法思路 (1)比较s和t两个串共同长度范围内的对应字符: ① 若s的字符>t的字符,返回1; ② 若s的字符<t的字符,返回-1; ③ 若s的字符=t的字符,按上述规则继续比较。 (2)当(1)中对应字符均
本组项目针对《数据结构基础系列(3):栈和队列》中的7-12课: 7.队列的定义 8. 顺序队的存储及基本操作 9. 环形队列的存储及基本操作 10. 队列的链式存储结构及其基本运算的实现 11. 队列的应用-迷宫问题 12. 双端队列 【项目1 - 建立顺序环形队列算法库】 定义顺序环形队列存储结构,实现其基本运算,并完成测试。 要求:
本文是针对数据结构基础系列网络课程(3):栈和队列的实践项目。 【项目 - 队列数组】 创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。输入若干个正整数,以数字0作为结束。设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中。最后输出所有的非空队列。 要求将队列处理成链式队列,使用链式队列算法库中定义的数据类型及算法,程序中只包括一