分享

数据结构

 guitarhua 2011-10-05

线性顺序表 是一个 在内存里限定了大小的表,不能合理的控制定义时候的大小会造成空间的浪费或者不足,因为在内存里它们的位置是连续的,所以可以快速的读取,修改某个元素值以及在末尾插入元素,但是要在中间插元素,就要移动大量的元素。

而线性链表是动态的 ,它的大小没有限制(在内存足够的情况下,你可以一直申请新的内存结点来存放元素),它在内存里不是连续的,所以不能快速的读取,修改,但是可以动态的扩充大小,这是很牛逼,而且插入元素的时候,不用进行大量的物理内存的移动,只要顺着链找到目标,然后进行链表的插入就可以。

 

 

 

┌———┬———————————————┬———————————————┐
│      │         顺序表          │         链表            │
├—┬—┼———————————————┼———————————————┤
│基│分│静态分配。程序执行之前必须明确│动态分配只要内存空间尚有空闲,│
│于│配│规定存储规模。若线性表长度n变 │就不会产生溢出。因此,当线性表│
│空│方│化较大,则存储规模难于预先确定│的长度变化较大,难以估计其存储│
│间│式│估计过大将造成空间浪费,估计太│规模时,以采用动态链表作为存储│
│考│  │小又将使空间溢出机会增多。    │结构为好。                    │
│虑├—┼———————————————┼———————————————┤
│  │存│为1。当线性表的长度变化不大, │<1                            │
│  │储│易于事先确定其大小时,为了节约│                              │
│  │密│存储空间,宜采用顺序表作为存储│                              │
│  │度│结构。                        │                              │
├—┼—┼———————————————┼———————————————┤
│基│存│随机存取结构,对表中任一结点都│顺序存取结构,链表中的结点,需│
│于│取│可在O(1)时间内直接取得      │从头指针起顺着链扫描才能取得。│
│时│方│线性表的操作主要是进行查找,很│                              │
│间│法│少做插入和删除操作时,采用顺序│                              │
│考│  │表做存储结构为宜。            │                              │
│虑├—┼———————————————┼———————————————┤
│  │插│在顺序表中进行插入和删除,平均│在链表中的任何位置上进行插入和│
│  │入│要移动表中近一半的结点,尤其是│删除,都只需要修改指针。对于频│
│  │删│当每个结点的信息量较大时,移动│繁进行插入和删除的线性表,宜采│
│  │除│结点的时间开销就相当可观。    │用链表做存储结构。若表的插入和│
│  │操│                              │删除主要发生在表的首尾两端,则│
│  │作│                              │采用尾指针表示的单循环链表为宜

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多