c++数据结构代码整理_数据结构如何学

0. 前言

0.1 说明

本系列一共分三期,主旨是让广大小白了解和入门数据结构。这是第三期:《数据结构如何学》。

0.2 书山有路勤为径

学习没有捷径,有的话那叫天赋。数据结构本身就是一门较为枯燥漫长的学科,首先要摆正态度一步一个脚印,少看什么《二十天入门到精通》这样的书和课程。

  1. 这些是为赶着面试的人用的。

  2. 是给非科班或者前端这样与数据操作较远的人用的。

这些是剑术,并非内功。

1. 学校课堂

认真听课是必须的好吧。

c++数据结构代码整理_数据结构如何学_第1张图片

1.1 前期内容及时消化

前期老师讲的会比较详细和简单,一定要在这个时候及时消化。

  1. 前期是所有的基础!

比如链表,这章的重点是清晰的明白链式结构是什么,比如后面的二叉树结构就很大部分用到了链式结构的递归性。

c++数据结构代码整理_数据结构如何学_第2张图片

要是前期崩了,那就等着下个学年重开吧!

c++数据结构代码整理_数据结构如何学_第3张图片

1.2 要克服前期的所有困难

  1. 没时间就找时间

因为我们的课本是c语言版本的,我们大一学的是c++,所以会有不适应。

找时间自己把c语言学了,这其实并不难,因为有了C++基础(因为了解到很多人数据结构劝退居然是卡在编程语言...)

c++数据结构代码整理_数据结构如何学_第4张图片

数据结构和算法都是思想,不应该局限在某一语言中。(内功可以御剑,亦可以御任何兵器)

1.3 给自己信心

数据结构是一种思想,与代码能力相关性较小,如果你大一学的并不好不要着急,更不要否定自己。

大二都不用跑操了,每天睡醒就多补补不会的。

c++数据结构代码整理_数据结构如何学_第5张图片 c++数据结构代码整理_数据结构如何学_第6张图片

<<< 左右滑动见更多 >>>

大二一年才是大学灵魂所在。真的,给自己信心很重要。

2. 课后学习

2.1 课本练习

  1. 不要眼高手低

课本上的伪代码都要自己亲手实现出来,虽然有时候你理解内容了,但是实现上面还是会愈要很多困难的,解决这些困难你会发现,不知不觉当中代码能力提升了一个水平。

c++数据结构代码整理_数据结构如何学_第7张图片

但是要记得写注释!!!

c++数据结构代码整理_数据结构如何学_第8张图片

2.2 主动找学习资源

如果你课堂很遗憾,并没有听懂。要第一时间去找视频学习。

c++数据结构代码整理_数据结构如何学_第9张图片 c++数据结构代码整理_数据结构如何学_第10张图片

<<< 左右滑动见更多 >>>

说真的,找书本没用,你需要是去看网上的学习视频。

(1) 视频找到很多,而且能重复看(你们网课过,应该都懂吧)(2) 可以看弹幕,随时问问题和看别人的理解。

这里只推荐两个平台 (多了反倒不好,没有选择也许是最好的选择哈)

  1. 哔哩哔哩

    推荐:王卓老师的数据结构[1]

  2. 慕课网

    推荐:C++实现《数据结构》

3. 多练项目

项目其实不着急,网上有很多

这里为了让你们感受数据结构的魅力,我用贪吃蛇这一个例子。

c++数据结构代码整理_数据结构如何学_第11张图片

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);//打印
 }
}

里面数据结构用了图和链表。

c++数据结构代码整理_数据结构如何学_第12张图片

4. 参加竞赛

参加比赛可以说是学习最快的的途径了。

想一想你们每次考试前一晚上看一本书的状态。

就是压力会比较大。

我说一下我大二参加的比赛吧。

4.1 校内比赛

2019年11月25日 校内软件设计大赛(好像学校评委对管理系统情有独钟,但是建议弄得好一点,明年中国大学生软件设计大赛[3]可以直接拿去用)

2019年11月30日 程序设计比赛(主要考一些算法,oj赛制,拿奖可以去参加蓝桥杯[4])

2020年6月19日 中国大学生软件设计大赛(一定要准备充分,把答辩PPT弄好,我就因为时间原因采坑了)——省赛

2020年8月9日 中国大学生软件设计大赛(因为疫情,所以推迟了,采用的是)——国赛

当然还有一些其他的比赛,但是我大二参加过的就这些。希望你们好好计划,我大二就希望有人和我说这些,可惜没有哈,很多踩过的坑都写在上面了,你们可以点赞转发让更多的人知道好吧

4.2 校外比赛

像各大oj平台牛客网、洛谷的比赛,还有华为、阿里、腾讯的比赛等等。

5. 全文总结

5.1 总结

5.2 目录

  • 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. 结尾

6. 结尾

相信这篇文章看完之后大家对《数据结构如何学》一定已经有了很好的理解了。

c++数据结构代码整理_数据结构如何学_第13张图片 c++数据结构代码整理_数据结构如何学_第14张图片

<<< 左右滑动见更多 >>>

本系列完结啦!

在这里感谢我的指导老师马翩翩,

带我入门数据结构,还与我交流了这么多。

参考资料

[1]

王卓老师的数据结构: "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"

你可能感兴趣的:(c++数据结构代码整理,数据结构,c++代码,菜单结构,如何添加数据,蓝桥杯C语言需要学数据结构)