学数据结构当然会比学第二门语言觉得难

【问题】

  贺老师,我有一个问题:在同时学C++和数据结构时,课本是谭浩强编的《C++程序设计》和烟蔚敏编的《数据结构(C语言版)》,为什么我感觉C++挺好学的,觉得这本书写的太好了,都比老师交的提前自学了好几章,而数据结构,我却是比c++先接触的,感觉很难,觉得书编的不好,特别书中函数都是抽象、大概、笼统的,没有一个完整的代码,无法参照学习,感觉都看不下去了,没法自学,而老师讲都又很笼统,特别落实到代码上很难,难道是学新的语言比较容易(背景是大一时我们一整年学的都是C),而深入、进一步的学习算法就难?现在感觉陷入了一个宁愿学习C++也不愿学数据结构,哪怕强迫自己看数据结构,也完全无法学习里面的东西的窘境。希望贺老师及时解答我的疑惑,同时也可以告诉我在数据结构上应该怎样学,谢谢了!

【回答】

  现在是你该再上升一个层次的时候了。学过了C语言,当然再在语言层面上学习会感觉顺利,尽管C++中增加了不少新的成份。你需要做的是,在抽象的层面上的数据结构和算法上获得新的感受。只在语言的层面上学习,不是专业学习的路子。我在http://blog.csdn.net/sxhelijian/article/details/7959647中谈了一些对抽象层面的体验,也讲了将语言与算法往一起拉的办法。另外,作为第二门语言,建议你在学习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菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======

时间: 2024-10-24 17:13:10

学数据结构当然会比学第二门语言觉得难的相关文章

[译]生活在 JavaScript 之中:学习第二门语言的好处

本文讲的是[译]生活在 JavaScript 之中:学习第二门语言的好处, 原文地址:Life after JavaScript: The Benefits of Learning a 2nd Language 原文作者:Nilson Jacques 译文出自:掘金翻译计划 译者:gy134340 校对者:Tina92,lsvih 你会多少种编程语言?根据最近的调查,大约 80% 的读者至少会两种.超过半数的人经常使用 PHP,我敢打赌大多数人就像我一样使用这门语言开始他们的 Web 开发. 最

学数据结构,是不是一定要先学离散数学

[问题的来源] 有<数据结构基础>网络课程的学员给我提问: 哈夫曼树是不是都是双分支,没有单分支的?有点不太懂这个哈夫曼树的构造过程,为什么要这样构造?只知道这样会让权值大的叶节点靠近根节点,小的叶节点远离根节点,为什么权值可以相加再比较呢? 我的答复是: 所有叶节点,都是原给定的节点:所有分支节点,度均为2,所以没有单分支. 很高兴看到你能提出这么多的为什么,然而在数据结构这门课程中,更注重是什么,怎么做的问题,也只能讲到这个层面了,为什么的事情,建议找"离散数学"教材,

C语言顺序表基本操作,刚学数据结构还不懂怎么操作?求助!!

问题描述 C语言顺序表基本操作,刚学数据结构还不懂怎么操作?求助!! 1.建立一个顺序表,要求从键盘输入10个整数,并将该顺序表的元素从屏幕显示出来. 2.用函数实现在顺序表中查找其中一个元素,如果找到,返回该元素在顺序表中的位置和该元素的值,否则提示无此元素. 3.用函数实现顺序表的插入和删除操作.由用户输入待插入元素及插入位置,将完成插入后的顺序表输出:由用户输入删除第几个元素,将完成删除后的顺序表输出. 解决方案 http://zhidao.baidu.com/link?url=n-XCi

c-刚学数据结构写了个链表,调试无报错,一运行就显示“main.exe停止运行”。

问题描述 刚学数据结构写了个链表,调试无报错,一运行就显示"main.exe停止运行". 刚学数据结构,写了个链表,调试无误,一运行就显示"main.exe停止运行",很头疼,求大神指点..谢谢~ 代码如下: #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -1 define LIST_INIT_SIZE 100 // 线性表存储空间的初始分配量 define LISTINCREMENT

模板类-学数据结构是一个叫殷人昆写的,书里各种bug,下面的重载函数到底怎么写?不要+内容,只要重载格式

问题描述 学数据结构是一个叫殷人昆写的,书里各种bug,下面的重载函数到底怎么写?不要+内容,只要重载格式 #ifndef SORTEDCHAIN_INCLUDED #define SORTEDCHAIN_INCLUDED #include #include using namespace std; template struct ChainNode { E data; ChainNode* link; ChainNode(): link(NULL){}; ChainNode(E& e1, Ch

c语言-为什么算法可以没有输入,可以举个具体的例子吗 急!!我刚学数据结构,好多都不理解,求大神支招!

问题描述 为什么算法可以没有输入,可以举个具体的例子吗 急!!我刚学数据结构,好多都不理解,求大神支招! 为什么算法可以没有输入,可以举个具体的例子吗 急!!我刚学数据结构,好多都不理解,求大神支招! 解决方案 不一定需要输入,第一你可以在程序之中就把初始值传入函数,或者是你写数据生成器也不用输入. 解决方案二: 不只是算法没有输入,,很多也不需要输入啊

小白刚学数据结构,有问题请教,求大神解答

问题描述 小白刚学数据结构,有问题请教,求大神解答 请大神帮我看一下代码有什么问题,我一直找不出问题在哪里 #include #include #include #define maxsize 100; typedef char datetype; typedef struct { datetype date[maxsize]; int len; }sq; void creatlist(sq *L) { int n; int i; char tmp; printf("请输入一个数字给n:&quo

学数据结构,只需要基本的编程体验

[来信] 老师,您好.我是华南理工大学的非计算机专业大二学生,但是发现自己的编程能力太差.想学数据结构但不知道要学好这个需要什么基础.大一时学校也只是水水地安排了c++课程,但是特别浅.希望您能够按照知识进阶列出一个学科顺序表,要是能附带推荐几本经典教材就更好了,谢谢老师. [回复] 学习数据结构,只需要会用一种语言,能编写一般的程序,这就可以了.如果现在你有困难,我觉得还是在学C++时实践没有跟上.学校开的课程,需要自己配备一定的自主学习.你喜欢编程,对学校C++课程感觉水和浅,因为这学期我也

从来没学过任何语言 现在想学C#有必要在学下C语言么。

问题描述 一切都是零 解决方案 解决方案二:c#里的许多语法和关键字都和C相似,现在我学了C之后再学C#觉得很轻松解决方案三:它们之间并没有什么必然的联系,可以直接学C#,可能会比较难理解点.解决方案四:如果你有时间的话最好能学下c和数据结构.如果你真的时间比较紧,那不学c和数据结构也可以把c#学好.解决方案五:同意楼上的解决方案六:恩,我就是想问下,直接学C#走的路子近点,还是先学下C语言近点,我不想走弯路了,我这人可笨好心人都来说说自己的看法,谢谢哈解决方案七:我觉得最好还是先大体了解一下C