本系列一共分三期,主旨是让广大小白了解和入门数据结构。这是第三期:《数据结构如何学》。
学习没有捷径,有的话那叫天赋。数据结构本身就是一门较为枯燥漫长的学科,首先要摆正态度一步一个脚印,少看什么《二十天入门到精通》这样的书和课程。
这些是为赶着面试的人用的。
是给非科班或者前端这样与数据操作较远的人用的。
这些是剑术,并非内功。
认真听课是必须的好吧。
前期老师讲的会比较详细和简单,一定要在这个时候及时消化。
比如链表,这章的重点是清晰的明白链式结构是什么,比如后面的二叉树结构就很大部分用到了链式结构的递归性。
要是前期崩了,那就等着下个学年重开吧!
因为我们的课本是c语言版本的,我们大一学的是c++,所以会有不适应。
找时间自己把c语言学了,这其实并不难,因为有了C++基础(因为了解到很多人数据结构劝退居然是卡在编程语言...)
数据结构和算法都是思想,不应该局限在某一语言中。(内功可以御剑,亦可以御任何兵器)
数据结构是一种思想,与代码能力相关性较小,如果你大一学的并不好不要着急,更不要否定自己。
大二都不用跑操了,每天睡醒就多补补不会的。
<<< 左右滑动见更多 >>>
大二一年才是大学灵魂所在。真的,给自己信心很重要。
课本上的伪代码都要自己亲手实现出来,虽然有时候你理解内容了,但是实现上面还是会愈要很多困难的,解决这些困难你会发现,不知不觉当中代码能力提升了一个水平。
但是要记得写注释!!!
如果你课堂很遗憾,并没有听懂。要第一时间去找视频学习。
<<< 左右滑动见更多 >>>
说真的,找书本没用,你需要是去看网上的学习视频。
(1) 视频找到很多,而且能重复看(你们网课过,应该都懂吧)(2) 可以看弹幕,随时问问题和看别人的理解。
这里只推荐两个平台 (多了反倒不好,没有选择也许是最好的选择哈)
哔哩哔哩
推荐:王卓老师的数据结构[1]
慕课网
推荐:C++实现《数据结构》
项目其实不着急,网上有很多
这里为了让你们感受数据结构的魅力,我用贪吃蛇这一个例子。
47行代码制作贪吃蛇[2]游戏(源代码如下)
#include
#include
#include
int main(){
int hX = 7, hY = 7, len = 4, i = 0, map[900] = { 0 };//头坐标,蛇长,循环变量,地图(-1:食物;0:空白;>0:蛇身)
char c = 'd', cl = 'd', deaw[1801] = { 0 };//初始方向,输入缓存,绘制缓存
system("mode con: cols=60 lines=30");//修改控制台窗口大小
srand((unsigned)malloc(1));//初始化随机数种子
for (map[rand() % 900] = -1; 1; Sleep(100))//生成食物,延时
{
if (_kbhit() && (cl = _getch()))//判断是否输入
switch (cl)
{
case 'a':case 'A':if (c != 'd')c = 'a'; break;//判断与原方向是否冲突
case 'd':case 'D':if (c != 'a')c = 'd'; break;
case 's':case 'S':if (c != 'w')c = 's'; break;
case 'w':case 'W':if (c != 's')c = 'w'; break;
}
switch (c)
{
case 'a':hX -= hX > 0 ? 1 : -29; break;//更新头坐标
case 'd':hX += hX 29 ? 1 : -29; break;
case 's':hY += hY 29 ? 1 : -29; break;
case 'w':hY -= hY > 0 ? 1 : -29; break;
}
if (map[hY * 30 + hX] > 1)exit(!_getch());//判断是否吃到自己
if (map[hY * 30 + hX] == -1)//判断是否吃到食物
{
len++;
do i = rand() % 900;
while (map[i]);//保证食物生成位置为空地
map[i] = -1;
}
else for (i = 0; i 900; i++)//全部蛇身值-1
if (map[i] > 0)map[i] -= 1;
map[hY * 30 + hX] = len;//蛇头赋值
for (i = 0; i 1800; i++)//更新绘制缓存
{
if (map[i / 2] == 0)deaw[i] = ' ';
else if (map[i / 2] > 0)deaw[i] = (i % 2) ? ')' : '(';
else deaw[i] = '$';
}
system("cls");//清屏
printf(deaw);//打印
}
}
里面数据结构用了图和链表。
参加比赛可以说是学习最快的的途径了。
想一想你们每次考试前一晚上看一本书的状态。
就是压力会比较大。
我说一下我大二参加的比赛吧。
2019年11月25日 校内软件设计大赛(好像学校评委对管理系统情有独钟,但是建议弄得好一点,明年中国大学生软件设计大赛[3]可以直接拿去用)
2019年11月30日 程序设计比赛(主要考一些算法,oj赛制,拿奖可以去参加蓝桥杯[4])
2020年6月19日 中国大学生软件设计大赛(一定要准备充分,把答辩PPT弄好,我就因为时间原因采坑了)——省赛
2020年8月9日 中国大学生软件设计大赛(因为疫情,所以推迟了,采用的是)——国赛
当然还有一些其他的比赛,但是我大二参加过的就这些。希望你们好好计划,我大二就希望有人和我说这些,可惜没有哈,很多踩过的坑都写在上面了,你们可以点赞转发让更多的人知道好吧
像各大oj平台牛客网、洛谷的比赛,还有华为、阿里、腾讯的比赛等等。
0. 前言
0.1 说明
0.2 书山有路勤为径
1. 学校课堂
1.1 前期内容及时消化
1.2 要克服前期的所有困难
1.3 给自己信心
2. 课后学习
2.1 课本练习
2.2 主动找学习资源
3. 多练项目
4. 参加竞赛
4.1 校内比赛
4.2 校外比赛
5. 全文总结
5.1 总结
5.2 目录
6. 结尾
相信这篇文章看完之后大家对《数据结构如何学》一定已经有了很好的理解了。
<<< 左右滑动见更多 >>>
本系列完结啦!
在这里感谢我的指导老师马翩翩,
带我入门数据结构,还与我交流了这么多。
王卓老师的数据结构: "https://www.bilibili.com/read/cv3285768"
[2]贪吃蛇游戏: "https://baike.baidu.com/item/%E8%B4%AA%E5%90%83%E8%9B%87/9510203?fr=aladdin"
[3]中国大学生软件设计大赛: "http://2020.jsjds.com.cn/"
[4]蓝桥杯: "https://baike.baidu.com/item/%E8%93%9D%E6%A1%A5%E6%9D%AF"