Chinaunix首页 | 论坛 | 博客
  • 博客访问: 466194
  • 博文数量: 93
  • 博客积分: 5006
  • 博客等级: 上校
  • 技术积分: 1002
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-30 13:58
文章分类

全部博文(93)

文章存档

2012年(2)

2011年(68)

2010年(23)

分类: C/C++

2011-05-10 21:35:20

一、空间的问题
    顺序表的存储空间是静态分配的,也就是顺序表的存储地址是连续的。在程序执行前,须明确规定它的存储规模。
    静态链表中初始存储池虽然也是静态分配的,但若同时存在若干个节点类型相同的链表,则他们可以共享空间,使个链表之间能够相互调节余缺,减少溢出机会。
    动态链表的存储空间是动态分配的,只要内存空间上有空闲,就不会产生溢出。
 
    即如果长度变化大,且大小难以估计,采用动态链表作为存储结构较好。
    
    同样还存在一个问题,存储密度(结点数据本身所占的存储量/结点结构所占的存储容量)。
    顺序表中有备用节点,而链表中有指针域,一个指针域占用的大小为一个int型数据的大小,所以,如果数据的大小可以确定范围,最好使用顺序表。
二、时间的问题
    顺序表是由向量实现的,它是一种随机存取的结构,对表中任一结点都可以在O(1)时间内直接存储。
    链表中的结点需要从头指针起顺着链才能找到。
    因此链表适用于增删改操作情况多的线性表
三、语言问题
    对没有指针这么一说的语言环境,可以设定静态链表实现。
阅读(2091) | 评论(0) | 转发(0) |
0

上一篇:常用的排序算法

下一篇:perl排序

给主人留下些什么吧!~~