学数据结构当然会比学第二门语言觉得难
2013-10-15 20:07
190 查看
【问题】
贺老师,我有一个问题:在同时学C++和数据结构时,课本是谭浩强编的《C++程序设计》和烟蔚敏编的《数据结构(C语言版)》,为什么我感觉C++挺好学的,觉得这本书写的太好了,都比老师交的提前自学了好几章,而数据结构,我却是比c++先接触的,感觉很难,觉得书编的不好,特别书中函数都是抽象、大概、笼统的,没有一个完整的代码,无法参照学习,感觉都看不下去了,没法自学,而老师讲都又很笼统,特别落实到代码上很难,难道是学新的语言比较容易(背景是大一时我们一整年学的都是C),而深入、进一步的学习算法就难?现在感觉陷入了一个宁愿学习C++也不愿学数据结构,哪怕强迫自己看数据结构,也完全无法学习里面的东西的窘境。希望贺老师及时解答我的疑惑,同时也可以告诉我在数据结构上应该怎样学,谢谢了!
【回答】
现在是你该再上升一个层次的时候了。学过了C语言,当然再在语言层面上学习会感觉顺利,尽管C++中增加了不少新的成份。你需要做的是,在抽象的层面上的数据结构和算法上获得新的感受。只在语言的层面上学习,不是专业学习的路子。我在/article/1356040.html中谈了一些对抽象层面的体验,也讲了将语言与算法往一起拉的办法。另外,作为第二门语言,建议你在学习C++时,同时看Bjarne Stroustrup的《C++程序设计语言(特别版)》,而不是在谭老师的书上找容易的感觉。
【再问】
谢谢老师的及时解惑,仔细看了您推荐的文章后,算是有了点小启发,知道了以后学习的大概方向。同时我还想问关于数据结构代码上的小细节问题:其一在线性表的ADT中有这样的语句: “Status InitList_sq(SqList &L)”,在看您的视频是用的VC++ 6.0的编译器使用的是c语言,对这样的语句编译完全没问题,而如果在codeblocks上会出现errors,直接想到的是将形参修改为指针变量运行通过了,但是这样往往会牵连修改很多处,很麻烦,而用类似的C++引用“SqList &L"非常方便,不知您是否有好的办法?
其二:在栈的那章,用的是VC++ 6.0,编译器,注意到在主函数中定义栈的变量(可能表述不规范)”SqStack L",然后调用初始化函数”Init_Stack(L)“完成栈的初始化,系统会报错,但是如果修改为:在主函数中完成栈的初始化,如分配内存空间等,则编译通过,自我感觉是”L没有初值,在参数传递过程中无法执行“,但是如果修改为在在主函数中完成初始化,感觉到就破坏了栈的ADT中各个函数的定义样,将初始化函数置于了一个特殊的位置,显得很不和谐,不知为什么会出现这样的问题。
【回答】
你看得很细,这样认真的态度确实也能够保证你的学习成就。不过,对这个问题,我有些为难是,我的咨询完全用业余时间,这么细的问题我没有时间去琢磨了。我在我的学生中间致力于营造“有兄弟,不孤单”相互帮助的氛围,我的精力用在方向和一般的方法上。所以,我希望你能够挖掘好周围的同学、老师的力量。写下这个回复,我需要5分钟,而解答你的问题,可能熟悉内容、再调试代码,我真力不从心了。希望你能理解,也相信你能找到途径和人讨论这样的问题。
【真心话】
今天白天完全是8个小时全和学生在一起的,繁重的教学任务和自愿的学生学习参与,使我的时间很紧。有时不得不作出这样的答复,希望同学们理解,我深感抱歉。也不希望由于我的原因,让找到网络求助途径的同学关上通过互联网或在现实世界寻到帮助的努力。
==================== 迂者 贺利坚 CSDN博客专栏=================|== IT学子成长指导专栏 专栏文章分类目录(不定期更新) ==||== C++ 课堂在线专栏 贺利坚课程教学链接(分课程年级) ==|======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======
贺老师,我有一个问题:在同时学C++和数据结构时,课本是谭浩强编的《C++程序设计》和烟蔚敏编的《数据结构(C语言版)》,为什么我感觉C++挺好学的,觉得这本书写的太好了,都比老师交的提前自学了好几章,而数据结构,我却是比c++先接触的,感觉很难,觉得书编的不好,特别书中函数都是抽象、大概、笼统的,没有一个完整的代码,无法参照学习,感觉都看不下去了,没法自学,而老师讲都又很笼统,特别落实到代码上很难,难道是学新的语言比较容易(背景是大一时我们一整年学的都是C),而深入、进一步的学习算法就难?现在感觉陷入了一个宁愿学习C++也不愿学数据结构,哪怕强迫自己看数据结构,也完全无法学习里面的东西的窘境。希望贺老师及时解答我的疑惑,同时也可以告诉我在数据结构上应该怎样学,谢谢了!
【回答】
现在是你该再上升一个层次的时候了。学过了C语言,当然再在语言层面上学习会感觉顺利,尽管C++中增加了不少新的成份。你需要做的是,在抽象的层面上的数据结构和算法上获得新的感受。只在语言的层面上学习,不是专业学习的路子。我在/article/1356040.html中谈了一些对抽象层面的体验,也讲了将语言与算法往一起拉的办法。另外,作为第二门语言,建议你在学习C++时,同时看Bjarne Stroustrup的《C++程序设计语言(特别版)》,而不是在谭老师的书上找容易的感觉。
【再问】
谢谢老师的及时解惑,仔细看了您推荐的文章后,算是有了点小启发,知道了以后学习的大概方向。同时我还想问关于数据结构代码上的小细节问题:其一在线性表的ADT中有这样的语句: “Status InitList_sq(SqList &L)”,在看您的视频是用的VC++ 6.0的编译器使用的是c语言,对这样的语句编译完全没问题,而如果在codeblocks上会出现errors,直接想到的是将形参修改为指针变量运行通过了,但是这样往往会牵连修改很多处,很麻烦,而用类似的C++引用“SqList &L"非常方便,不知您是否有好的办法?
其二:在栈的那章,用的是VC++ 6.0,编译器,注意到在主函数中定义栈的变量(可能表述不规范)”SqStack L",然后调用初始化函数”Init_Stack(L)“完成栈的初始化,系统会报错,但是如果修改为:在主函数中完成栈的初始化,如分配内存空间等,则编译通过,自我感觉是”L没有初值,在参数传递过程中无法执行“,但是如果修改为在在主函数中完成初始化,感觉到就破坏了栈的ADT中各个函数的定义样,将初始化函数置于了一个特殊的位置,显得很不和谐,不知为什么会出现这样的问题。
【回答】
你看得很细,这样认真的态度确实也能够保证你的学习成就。不过,对这个问题,我有些为难是,我的咨询完全用业余时间,这么细的问题我没有时间去琢磨了。我在我的学生中间致力于营造“有兄弟,不孤单”相互帮助的氛围,我的精力用在方向和一般的方法上。所以,我希望你能够挖掘好周围的同学、老师的力量。写下这个回复,我需要5分钟,而解答你的问题,可能熟悉内容、再调试代码,我真力不从心了。希望你能理解,也相信你能找到途径和人讨论这样的问题。
【真心话】
今天白天完全是8个小时全和学生在一起的,繁重的教学任务和自愿的学生学习参与,使我的时间很紧。有时不得不作出这样的答复,希望同学们理解,我深感抱歉。也不希望由于我的原因,让找到网络求助途径的同学关上通过互联网或在现实世界寻到帮助的努力。
==================== 迂者 贺利坚 CSDN博客专栏=================|== IT学子成长指导专栏 专栏文章分类目录(不定期更新) ==||== C++ 课堂在线专栏 贺利坚课程教学链接(分课程年级) ==|======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======
相关文章推荐
- R语言学习笔记(2):数据类型和数据结构
- C语言数据结构链表队列的实现
- 程序员代码面试指南:IT名企算法与数据结构题目最优解-字符串问题:C/C++语言实现
- 数据结构(java语言描述)递归实现——汉诺塔问题
- C语言数据结构笔试题
- C语言数据结构----栈的定义及实现
- 数据结构(Java语言)——LinkedList简单实现
- c语言数据结构中循环队列操作,包括初始化,创建,清空销毁,增添,删除,求队长,遍历等等
- 觉得PowerBuild语言的clicked方法有问题
- 用java语言中API函数Linklist模拟一个堆栈或者队列数据结构
- 嵌入式Linux C语言基础——ARM Linux内核常见数据结构
- C语言数据结构之十进制转任意进制
- 语言都是相通的,学好一门语言,再学第二门语言就很简单,记录一下我复习c语言的过程。
- R语言数据结构介绍-入门篇
- 黑马程序员——零基础学习iOS开发——03 c语言基础语法:关键字、标示符、注释、数据结构、变量、变量内存分析、scanf函数
- C++语言数据结构 串的基本操作实例代码
- C语言数据结构----链表(静态链表)
- c语言数据结构之顺序表
- 数据结构C语言动态分配实现串
- 【数据结构】之栈(Java语言描述)