数据结构学习

原创 2007年09月27日 13:06:00

本文以MFC中对应的类为例,学习几种数据结构
1. 数组--CArray
   访问方法及效率和普通的数组一样,比普通数组强大的功能是可以改变数组的大小。
   特点:通过索引(数组下标)访问的速度很快,但是插入删除操作很慢,因为插入删除操作时,是需要移动元素的。
   访问方法:通过索引访问,普通的数组怎么用,它就可以怎么用。

2. 双链表--CList
   
   特点:插入删除很快。但是通过索引访问很慢,因为通过索引访问的时候,实际上是链表头开始计算个数的。所以在遍历链表的时候不要这样写:
      for(int i=0; i<list.GetCount(); ++i)
      {
           POSITION pos = list.FindIndex(i);
           Item item = list.GetAt(pos);
           ...
       }
    访问方法:通过POSITION变量访问,它实际上就是双链表节点的指针。我觉得这种访问方法比加个什么iterator要好,因为很多时候我们都是在对链表进行插入删除操作,这个时候一个iterator的功能有限。

3. 散列(hash)表--CMap   

    特点:通过散列算法将key计算一个索引值,基本上就是一个空间换时间的应用。对于重复的key,它和大多数的hash表结构一样,采用了一个链表。所以,如果key重复比较多的话,他的查找还是很慢的。
    访问方法:也是用POSITION变量。不过需要注意的是,通过CMap提供的遍历函数得到的元素的顺序恰好和添加的顺序相反。

4. 二叉树--无对应类
    特点:一个排序二叉树的查找就是一个天生的二分法。所以,如果向二叉树中添加元素时需要进行比较的话,最好直接创建成二叉排序树,这样查找起来很快。例如,CMap在key重复时就可以用二叉树代替链表。 

这些数据结构都是集合,都可以存储大量的数据,所以,在使用的时候,根据不同的情况,选择不同的数据类型,才能让你的程序既功能强大,又效率高。

数据结构学习(一):入门

1. 算法 + 数据结构 = 程序 问题(problem):从输入到输出的一种映射函数 数据结构(Data Structure):逻辑数据结构在计算机中的存储表达,支持相应的操作 算法(algori...
  • S415X
  • S415X
  • 2016年10月08日 10:40
  • 2215

小白如何玩转Java的数据结构—轻松理解学习

Java从零基础到入门 2016-11-12 23:28 Java的工具包提供了非常强大的数据结构,在Java中的数据结构呢,主要是包括以下几种接口和类:枚举,位集合,向量,栈,字典,哈希表,属性。...
  • u011277123
  • u011277123
  • 2016年11月14日 09:37
  • 409

为什么要学习数据结构?

学习数据结构有什么用?
  • u014800380
  • u014800380
  • 2016年10月10日 15:17
  • 872

数据结构学习总结——预备知识

数据结构部分需要知道的一些基础知识
  • see_snow_with_you
  • see_snow_with_you
  • 2015年09月26日 19:12
  • 521

数据结构全攻略--学好数据结构的必经之路

很多人在学习时一猛子扎进细节里无法自拔,以至于顾此失彼,丢了西瓜捡了芝麻。这种学习方法特别浪费时间,效率也非常低下,以至于在学习的长河中惨遭淘汰。如果这种人继续不思进取,那么在激烈的社会竞争环境中也会...
  • zhang_xinxiu
  • zhang_xinxiu
  • 2013年09月16日 09:23
  • 21804

数据结构学习感悟

数据结构渐进式学习       数据结构毫无疑问的是在编程上非常重要的一部分内容,在我的学习过程中,我经历了迷茫,入门,熟悉等阶段,我以个人经历为例子,讲解一下我对数据结构从惧怕到熟悉的过程。    ...
  • hello_bravo_
  • hello_bravo_
  • 2016年10月14日 10:29
  • 451

数据结构学习笔记

最近在看国嵌唐老师的数据结构视频,觉得还不错,所以就把笔记记录下来 本节知识点: 1.数据之间的逻辑结构:    集合结构:数据元素之间没有特别的关系,仅同属相同集合    线性结构:...
  • yhf19881015
  • yhf19881015
  • 2013年09月05日 16:51
  • 7083

数据结构与算法系列----学习数据结构与算法前你需要知道的

数据结构教科书上开篇就是“什么是数据结构?”,这里我也就不多说了,没意思。 我总是把“数据结构”和“算法”这两个词语看做是一样的(个人而言哈),我们倒不如说说算法能干什么,学习数据结构能干什么? 不知...
  • LaoJiu_
  • LaoJiu_
  • 2016年04月28日 11:45
  • 957

数据结构学习心得总结

开篇经过近一个月的学习,终于将郝斌老师讲的数据结构视频看完了~学习完成后,受益良多,也非常喜悦,非常开心,好像终于打了一场胜仗一样!我打算将这一个月的学习心得做一个汇总,记录下来。 希望能给初学者带...
  • u011509781
  • u011509781
  • 2016年01月29日 21:35
  • 1993

算法与数据结构学习资料及面试

分类:   大数据 数据挖掘(14)  版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] 数据结构与算法设计是CS相关专业的必修课,也是IT公司笔试面试的...
  • han____shuai
  • han____shuai
  • 2016年02月29日 01:36
  • 929
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构学习
举报原因:
原因补充:

(最多只允许输入30个字)