to breath:堆栈我好像知道,但其他的是什么?
to all:说话的语气无所谓,但请多谈数据结构,因为我没感到需要用他们,所以纳闷,所以才问。
to all:说话的语气无所谓,但请多谈数据结构,因为我没感到需要用他们,所以纳闷,所以才问。
解决方案 »
- vs2008 opengl stl
- CString 转Char?
- 关于那本 programming windows
- VC6 中,怎么实现系统级模态对话框(或消息框)?要求如下:
- 一个有趣的问题,如何给文件夹加口令?
- 多线程程序~~,,为什么在主线程 里,等待所有工作线程工作结束后,程序退出,在设定的超时过后工作线程没有退出完全,用TerminateThread强行删
- 求救!!!怎么样才能只保存屏幕图象变化的部分!!!!!100分!!!!
- 如何显示图形?请教!
- 上层开发到底要不要再学习.NET等开发
- 关于使用ShellExecute函数的问题
- 我想学vc++但不知从何入手,望vc++高手指教,还有,vc++比vb如何,优势在哪里。
- 我的程序在RELEASE版本中可以实现的程序,在DEBUG版本中却不能,产生非法操作,
其实,我可以举个例子:在我的程序里“拆”了LZW,也“拆”了RLE,唯独没敢动JPEG,不是顾忌霍夫曼,霍夫曼有“漏洞”,但“DCT”我把握不住。当然,时间也是一个因素——更重要的因素,却不足为外人道。
以上有14位朋友发言,我打算把分数均分,抱歉,只有这么一点,请笑纳。
感谢leer,在别的地方他告诉过我,题目很重要!
另外,上面有一位朋友的名字是“Nicrosoft”,被我错拼成“microsoft”,对“Nicrosoft”和“microsoft”一并表示道歉。
谢谢大家,如果有兴趣,可以用我的程序“拆”一些东西,诸如JPEG,因为你们比我条件好,你们懂数据结构。
我说的这些都是我用过的
举个最简单的例子,老鼠过迷宫,遇到岔路时候怎么办
1、递归(资源占用大)
2、堆栈(将岔路入栈,走不通时弹出...)
至于队列,windows的消息机制不就是队列么
...
谢谢你的再次关注。
数据结构和算法不是同一个概念,希望你能搞清楚,做程序员,在思维上狂我很赞成.有一点,我给你
提些意见,你不知道它有什么用,为什么不找本书看一下呢?可能,你有你的原因吧!
即使对图像不感兴趣,单纯用它替代一般的十六进制浏览器,我认为也足可胜任。
最多不超过30次的比较判断.这就是SQL数据库的原理所在.否则不用这个的话你用的时间呈指数上
升。
当然,SQL数据库是用的B树的方法,比AVL数还要快的多.现在的NTFS文件系统也是一中B树的文件系
统所以说你不学数据结构,你编的PROGRAM则是小儿科而已.现在的编程不是你会用VC,BCB,DELPHI就可以了,那只是基础.关键是要好的算法(这就是学数据结构的好处),好的思路
最多不超过30次的比较判断.这就是SQL数据库的原理所在.否则不用这个的话你用的时间呈指数上
升。
当然,SQL数据库是用的B树的方法,比AVL数还要快的多.现在的NTFS文件系统也是一中B树的文件系
统所以说你不学数据结构,你编的PROGRAM则是小儿科而已.现在的编程不是你会用VC,BCB,DELPHI就可以了,那只是基础.关键是要好的算法(这就是学数据结构的好处),好的思路
to js123:在100万项数据中能够通过30次判断找到目标?需要什么样的“树”和算法?愿闻其详,非常非常感谢。
关于树的问题,建立一棵排序二叉树就可以,不过建立这棵树倒是比较费时间。
to Nicrosoft:其实盗亦有道,我本人不会用VB或Delphi,但我觉得那里边的学问一定
也很深。
我有一本清华大学出版社出版的<<数据结构>>一书(C语言版)。但由于水平有限,真的看不懂。不知道这里的朋友能否向我推荐一本有关这方面的,比较浅显、入门的书籍。我看过谭浩强教授的C程序设计一书,上面有一例讲链表的生成、删除、插入,讲得很详细,对我来说就需要这样的读物。可惜,书上只有这么一个例子。关于其它东西,教我参考数据结构方面的书籍,但是,哪里才有适合我阅读的呢?
数据结构我没有仔细琢磨,只是知道树等的概念和应用范围,说实话,我开发两年多VC以来,唯一一次用到也不过是二分法而已,也是到时现翻书学的,我一直不大明白许多人学东西为什么一定要从最原始的开始学起,学个半年的C,然后再半年C++,然后才学VC++,为什么不找本24小时学习VC呢,简单实用,先学个框架,再开发中学习细节不就可以了吗?我觉得知道用什么方法解决这个问题OK了。
你的回答已经证实我上面的话(“其实你已经用了数据结构的知识了”)了:
你用一个一维数组解决了这个问题,but……undo嘛,你的操作必定是后进先出吧?这不就是
一个堆栈吗?然后就是无限undo的问题,用一维数组做堆栈,你把数组设多大了?考虑到内存
容量,不可能设置得太大的吧?链表会比较浪费空间,但是都是需要时分配,也可以利用一些
内存空洞,在步数比较多的情况下优势比较明显(关键是按需分配,而不是强行要多少)。TO Kronus:
二分查找确实很快,但是用二分来查找一个基于链表所构成的数据实在很不实际,因为当你正
遍历链表中第n个节点时你只知道第n+1和n-1个节点的位置,想知道n/2的位置只能不停的走
下去……而实际应用上,有时必须用链表的那种方式来操作数据的,因为内存中并不一直存在
巨大的连续可用空间来存在数据(一般的数组是连续存放于内存里的),在这种情况下二分就
失效了。而树遍历来查找数据也是很快的,每遍历一个节点时确定遍历的下一个节点,要找到
想找的数据是非常快的,只是建立这个树比较耗时耗力,但建立之后添加新节点删除节点寻找
节点的速度都非常快。最后提一句:数据结构其实是与语言无关的,各有各的实现方法,当然,c的指针绝对会比
basic的方式有效得多。
程序中就没用数据结构了吗?
不可能的
只是我们大多数程序员用的数据结构都很简单
程序逻辑都不复杂
虽然一些问题很头痛
但是也不会使用一些复杂的数据结构
2000说他没有用递归,程序速度更快,这是对的
循环比递归更快
如果能够用循环解决问题,谁都不会用递归
要成为程序员
会for,while,if等几个简单的语句就行
但是想成为高手
不懂数据结构恐怕不行
我说的高手,不是在会不会的界限上
而是在能不能的界限上
to Nicrosoft:我确实曲解了你的意思,抱歉。不过我认为即使不写代码,根据定义,做程序的人也应属于程序员。
to microant:感谢你的关注!undo使用一维数组,不过是动态分配的,步长0x1000。在undo这种场合使用链表肯定会降低性能,并且也用不到它的长处(随机访问)。
说到遍历链表,那正是我的意思:比如,我不太懂数据结构,但知道二分法,经常用它解决问题。忽有一日,碰到链表了,左思右想,苦无良策,于是去查书,学到“树”的方法。这样可以吗?
如果有机会学,没必要故意不学。但如果像我一样半路出家,也没必要惴惴于自己的浅薄。许多人听信行家的话,关起门来悬梁刺骨,结果却倒尽了胃口,无功而返。他们不懂,别人的经验不适用于自己的情况。
日积月累,有收获,有乐趣,才能越走越远。至于行家总是断言爱好者没有前途,谁也知道那是偏见,可以不去理会。