请问在学过C的基础上是应该先学数据结构和算法,还是先学c++或JAVA呢?

u010383688 2013-04-23 11:36:43
请问在学过C的基础上是应该先学数据结构和算法,还是先学c++或JAVA呢?
谢谢
...全文
943 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
MA_XILAI 2013-04-30
  • 打赏
  • 举报
回复
同时学.数据结构和算法是基础. 建议先学C++,然后同时学数据结构和算法(C++描述)
hww836967373 2013-04-30
  • 打赏
  • 举报
回复
了解一点点数据结构的知识(其实算法可以在工作后我们再继续深入研究)。接下来学c++吧。(语言这东西都是相同的,大同小异)你在学数据结构的同时也可以学习c++,两者不应该分先后!个人观点,呵呵。
就是那个党伟 2013-04-30
  • 打赏
  • 举报
回复
引用 17 楼 u010383688 的回复:
[quote=引用 15 楼 dw903632958 的回复:] [quote=引用 12 楼 u010383688 的回复:] [quote=引用 11 楼 dw903632958 的回复:] 愿意学汇编么
?你什么意思?单片机用过 [/quote] 计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 某位大神的意见,看看适合你不[/quote] 我不太赞同,我不是专业CS的,没有那么多精力。[/quote] 随便了,你觉得没时间,那就少看点咯
就是那个党伟 2013-04-29
  • 打赏
  • 举报
回复
引用 12 楼 u010383688 的回复:
[quote=引用 11 楼 dw903632958 的回复:] 愿意学汇编么
?你什么意思?单片机用过 [/quote] 计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 某位大神的意见,看看适合你不
fthislife 2013-04-29
  • 打赏
  • 举报
回复
引用 16 楼 u010383688 的回复:
[quote=引用 14 楼 fthislife 的回复:] 如果只是学了基础的话,果断要再深入点学习,实现世界的事物是用数据结构来表示,并且通过一定的方法(算法)用编程语言来解决问题的,语言的掌握程度不够,实现算法的时候就有点难。然后再学习C++和数据结构和算法。首先把常用的数据结构学好(后期深入的学习),然后再学习C++编程,此时偏重于面向对象的学习;接着学习各种模板以及各种库类等;由于学习算法方面要学好需要比较长的时间,所以算法从始到终穿插学习,包括后期的不断坚持。
非常感谢 常用的数据结构 是指树/图那些基本概念么?(我只看了这些基本概念,还没看具体的程序语言实现)。能再说下“各种模板”是什么意思么("各种模板"没法在网上搜是什么意思)?谢谢![/quote] 常用数据结构比如:数组、线性表、单向链表、双向链表、循环链表、队列、栈,树结构(二叉树、查找树、平衡树、线索树等)还有图结构等。能实现创建、查找、删除、插入等常用操作。 模板如 STL
u010383688 2013-04-29
  • 打赏
  • 举报
回复
引用 15 楼 dw903632958 的回复:
[quote=引用 12 楼 u010383688 的回复:] [quote=引用 11 楼 dw903632958 的回复:] 愿意学汇编么
?你什么意思?单片机用过 [/quote] 计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 某位大神的意见,看看适合你不[/quote] 我不太赞同,我不是专业CS的,没有那么多精力。
u010383688 2013-04-29
  • 打赏
  • 举报
回复
引用 14 楼 fthislife 的回复:
如果只是学了基础的话,果断要再深入点学习,实现世界的事物是用数据结构来表示,并且通过一定的方法(算法)用编程语言来解决问题的,语言的掌握程度不够,实现算法的时候就有点难。然后再学习C++和数据结构和算法。首先把常用的数据结构学好(后期深入的学习),然后再学习C++编程,此时偏重于面向对象的学习;接着学习各种模板以及各种库类等;由于学习算法方面要学好需要比较长的时间,所以算法从始到终穿插学习,包括后期的不断坚持。
非常感谢 常用的数据结构 是指树/图那些基本概念么?(我只看了这些基本概念,还没看具体的程序语言实现)。能再说下“各种模板”是什么意思么("各种模板"没法在网上搜是什么意思)?谢谢!
fthislife 2013-04-29
  • 打赏
  • 举报
回复
如果只是学了基础的话,果断要再深入点学习,实现世界的事物是用数据结构来表示,并且通过一定的方法(算法)用编程语言来解决问题的,语言的掌握程度不够,实现算法的时候就有点难。然后再学习C++和数据结构和算法。首先把常用的数据结构学好(后期深入的学习),然后再学习C++编程,此时偏重于面向对象的学习;接着学习各种模板以及各种库类等;由于学习算法方面要学好需要比较长的时间,所以算法从始到终穿插学习,包括后期的不断坚持。
薛定谔之死猫 2013-04-29
  • 打赏
  • 举报
回复
C++和Java的一些容器中会涉及数据结构和算法,先了解下数据结构理解的难度会小一些
u010383688 2013-04-29
  • 打赏
  • 举报
回复
引用 11 楼 dw903632958 的回复:
愿意学汇编么
?你什么意思?单片机用过
就是那个党伟 2013-04-28
  • 打赏
  • 举报
回复
愿意学汇编么
u010383688 2013-04-28
  • 打赏
  • 举报
回复
说数据结构的人多呀 可是在别的论坛得到的回答不一样
zhcosin 2013-04-24
  • 打赏
  • 举报
回复
当然是数据结构
图灵狗 2013-04-24
  • 打赏
  • 举报
回复
先学数据结构和算法。
Red_angelX 2013-04-24
  • 打赏
  • 举报
回复
果断先学数据结构打基础 VC什么的一定要丢一边
starytx 2013-04-24
  • 打赏
  • 举报
回复
为什么要分先后呢,知识都是穿插起来的
luotuo44 2013-04-24
  • 打赏
  • 举报
回复
这得看你为什么先学C语言,而不是一开始就学C++/Java。如果学C语言是作为的一个学其他语言的跳板,自己也不想在C语言发展,就学C++/Java吧。如果想深入学习C语言的话,就学数据结构。
赵4老师 2013-04-24
  • 打赏
  • 举报
回复
为什么要有数据结构这个东东? 因为要将现实世界或者抽象理论中的各种数据保存在计算机外存(光盘、硬盘、U盘……)或内存(ROM、RAM、SRAM……)里面的二进制字节数组中。 然后让CPU这个只会执行预先保存好的加减乘除移位条件转移……等机器指令的家伙按照人的意志去处理这些数据。至于具体如何处理就是所谓算法。 推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
赵4老师 2013-04-24
  • 打赏
  • 举报
回复
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告: 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步对应汇编一行! 单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。 VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。) 想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。 从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单! 指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。” 但我又不得不承认: 有那么些人喜欢或者适合用“先具体再抽象”的方法学习和理解复杂事物; 而另一些人喜欢或者适合用“先抽象再具体”的方法学习和理解复杂事物。 而我本人属前者。 这辈子不看内存地址和内存值;只画链表、指针示意图,画堆栈示意图,画各种示意图,甚至自己没画过而只看过书上的图……能从本质上理解指针、理解函数参数传递吗?本人深表怀疑! 这辈子不种麦不收麦不将麦粒拿去磨面;只吃馒头、吃面条、吃面包、……甚至从没看过别人怎么蒸馒头,压面条,烤面包,……能从本质上理解面粉、理解面食吗?本人深表怀疑!! 提醒: “学习用汇编语言写程序” 和 “VC调试(TC或BC用TD调试)时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 (Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。) 想要从本质上理解C指针,必须学习C和汇编的对应关系。” 不是一回事! 不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码! 电脑内存只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
anequitousse 2013-04-24
  • 打赏
  • 举报
回复
data structure of course
加载更多回复(1)
数据结构--序言数据结构--序言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 能够熟练地选择和设计各种数据结构算法。 至少要能够熟练地掌握一门程序设计语言。 熟知所涉及的相关应用领域的知识。 其中,后两个条件比较容易实现,而第一个条件则需要花相当的时间和精力才能够达到,它是区分一个程序设计人员水平高低的一个重要标志,数据结构贯穿程序设计的始终,缺乏数据结构算法的深厚功底,很难设计出高水平的具有专业水准的应用程序。曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》,也说明了数据结构算法的重要性。 《数据结构》是计算机科学与工程的基础研究之一,掌握该领域的知识对于我们进一步进行高效率的计算机程序开发非常重要。无论在中国还是在美国,《数据结构》一直是大学的计算机专业重要的专业基础课。例如,在著名的美国的加州大学伯克利分校(著名的BSD Unix的发源地,很多Unix操作系统由它派生而来或带有它的痕迹——例如FreeBSD、Sun公司的Solaris、IBM的AIX),就用一个学期开设《数据结构算法》课程(在这之前,用一个学期开设《C++程序设计》课程)。 现行的中学相关的计算机教程或者是关于怎样使用Windows操作系统及其工具、或者是有关办公软件的使用,或者是打字教程。计算机对他们始终有一种神秘感,也许是理论导向吧,因为不可能每个人将来都成为计算机专业人员。 作为一个中学生,在学完C/C++以后,关键的问题是怎样熟练地应用和巩固。本网站希望能够结合《数据结构》和相关的数、理、化知识来巩固C/C++。其实《数据结构》并不难。可以说,数据结构贯穿于我们的数学课程之中,只是思考问题方法的不同。在大学的《数据结构》教程中,很多生僻的词语、晦涩难懂的语句,连大学生就感到望而生畏。本网站将集合小学和中学的数学、物理、化学教材,深入浅出地讲解这门课程。希望不但能够对学习电脑有所帮助,更希望能够对数理化的学习起到一个促进作用。 在学习《数据结构》之前,要求学生有C/C++基础。可以这样说,C/C++是其他程序设计语言的基础。掌握了C/C++,学习其他语言就会易如反掌。例如,微软的MFC类库基于C++;ATL基于C++中的模板类;Java语言基于C++思想,其编程风格与C++差别很小;C++ Builder又是基于C++;Delphi中的有关对象的概念与C++中的对象几乎完全一致。C++相比其他语言具有与计算机硬件集合紧密、代码效率高,这是Java语言和其他高级语言所无法比拟的。这样,C/C++对于学习计算机系统结构有很大的好处。
基础的重要性(程序员之路) 学习编程有几年了,感觉走了不少弯路,而不少的学弟学妹又在重蹈我当初的覆辙,不免有些痛心。最近在网 上也看了许多前辈们的经验建议,再结合自己的学习经历在这里谈谈基础的重要性,希望帮助大家少走些弯 路。 什么是基础呢?就是要把我们大学所学的离散数学,算法数据结构,操作系统,计算机体系结构,编译原理 等课程学好,对计算机的体系,CPU本身,操作系统内核,系统平台,面向对象编程,程序的性能等要有深层次的掌握。 初学者可能体会不到这些基础的重要性,学习jsp,donet,mfc,vb的朋友甚至会对这些嗤之以鼻,但是一开始没学 好基础就去学jsp或donet会产生很坏的影响,而且陷入其中不能自拔。 我上大二的时候还对编程没什么概念,就上了门C++也不知道能干什么,老师说MFC也不知道是什么东西, 看别的同学在学asp.net就跟着学了,然后就了解到.net,j2ee,php是什么了,就觉得软件开发就是用这些了,而上 的那些专业课又与我们学的sqlserver啊,css啊,ajax啊,毫无关系,就感慨啊,还不如回家自学去就为一个文凭吗? 还不如去培训,浪费这么多钱.于是天天基本上没去上什么课,天天就在做网站,几个学期就做了三个网站。感觉做 这些网站就是学到些技巧,没什么进步,这些技巧就好比别人的名字,告诉你你就知道了,网上也都可以搜到。那时 候就觉得把.net学好就行了,搞j2ee的比较难,搞api编程就别想了,操作系统更是望尘莫及了。后来随着学习 的深入和看了网上许多前辈们的建议才对这些基础的重要性有所体会。 虽然.net或java的开发并不直接用到汇编,操作系统这些,但是不掌握这些基础是有很大问题的,因为你只知 其然不知其所有然,在mfc和.net里面控件一拖什么都做好了,很方便,但是出了问题可能就解决不了,有些在 网上搜都搜不到。这就是基础没打好,不知道它的原理就不知道出错的原因。在学.net的时候常会讨论那些控件 该不该用别人说尽量别用也不知道为什么?不让用是因为你在高层开发,你不知道它的原理出错了你可能解决不 了,但其实是应该用的,不然人家开发它干嘛,但要在了解它的原理后去用就会很方便。 要编写出优秀的代码同样要扎实的基础,如果数据结构算法学的不好,怎么对程序的性能进行优化,怎样 从类库中选择合适的数据结构。如果不了解操作系统,怎样能了解这些开发工具的原理,它们都是基于操作系统 的。不了解汇编,编译原理,怎么知道程序运行时要多长时间要多少内存,就不能编出高效的代码。 如果没有学好基础一开始就去学.net,java这些越往后就会觉得越吃力,它们涉及的技术太多了,而且不但 在更新,对于三层啊,mvc,orm这些架构,你只会用也不明白为什么用,就感觉心里虚,感觉没学好。而你把 面向对象,软件工程,设计模式这些基础学好了再去看这些就可以一不变应万变。 大家不要被新名词、新技术所迷惑.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就像是在 云里雾里行走一样,只能看到眼前,不能看到更远的地方。这些新鲜的技术掩盖了许多底层的原理,要想真正 的学习技术还是走下云端,扎扎实实的把基础知识学好,有了这些基础,要掌握那些新技术也就很容易了。 开始编程应该先学C/C++,系统api编程,因为它们更接近底层,学习他们更能搞清楚原理。学好了c/C++ 编程和基础,再去学习mfc,.net这些就会比较轻松,而且很踏实。假设学习VB编程需要4个月,学习基础课程和 VC的程序设计需要1年。那么如果你先学VB,再来学习后者,时间不会减少,还是1年,而反过来,如果先学习 后者,再来学VB,也许你只需要1个星期就能学得非常熟练。 bbs.

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧