数据结构-4

来源:互联网 发布:软件外包服务是什么 编辑:程序博客网 时间:2024/06/16 22:27
2016/02/17 00:06
1.ADT的规范,并且基于这种规范给出向量接口的定义
  实现了对于一个数据结构而言最重要的构造与析构接口
  与所有数据结构一样,向量也可以看成是一组数据的集合。

2.集中研究向量的可扩充性能
   向量是不具备可扩充性能的,原因在于它的静态空间管理。
   我们知道向量其实就是开辟一个内部数组_elem[]并使用一段地址连续的物理空间
   在elem[]中_capacity是总容量,_size是当前的实际容量。
   不难发现使用静态空间管理策略有着严重的不足:
                                                     上溢overflow
                                                     下溢underflow:装填因子很小空间浪费

3.动态空间管理策略
   向量随实际需求动态调整容量,并同时保证高效率。
   在练习笔记中expand中:对于尚未封装的数组同样可以运用这个策略,那么对于向量而言这段代码有什么优势呢?这个优势体现在向量整体的封装性上。
我们知道对于一般的数组而言,如果经过动态地重新分配地址,那么原先指向数组内某些元素的指针会出现无效现象。
而在这里向量的封装中,我们同一用了_elem这个统一的指示器来标识空间的起点,尽管扩容之后数据区的物理地址有所改变,却不至于出现野指针。
*******************************************
2016/02/07 20:24
1.跨函数调用内存
    #include <stdlib.h>
     main()
{
     int *p;
     fun(&p);
     .......
}
     int fun(int **q)
{
     *q=(int *)malloc(4);
}

2.记得java里有arraylist类还有add()等等一些已经封装好的调用函数
   学会这类函数的底层封装程序的编写。用c写出:。。。。。。。。。。。。
   结构体变量不能加减乘除,但可以相互赋值。

0 0