码迷,mamicode.com
首页 > 其他好文 > 详细

线性表—顺序存储结构

时间:2015-04-26 13:43:42      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

线性表——顺序存储结构

     我理解的顺序存储就是 存储的一组元素在内存中呈线性排列,地址相邻,就像火车一样,每个车厢都可以看做是一个元素,元素门内首尾相连且地址相邻,书看的是高一凡老师的书,学完后自己写一下总结和体会,一来加深印象,二来可以方便自己复习。

     顺序存储结构似乎都是用数组来实现的,也就是以数组为核心,外面加了许多很方便的操作(函数)进行封装,然后就说这叫【顺序存储结构】——数组的深加工之后的产品

顺序存储结构的基本功能有以下几个:

     name:     sqlist

     private: T *elem    (指向其中所存储元素的指针)

                  int length (里面实际存储元素的个数)

                  int listsize(最多可以存储多少个元素)

     public:    【构造函数】 sqlist(T k=1) 创建该种数据结构的时候要进行内存分配,对象数据成员的初始化操作,k表示要分配的T类型内存空间的大小,有默认值,构造完成之后,对象就有血有肉了。

                  【析构函数】 ~sqlist(){ delete []elem ;} 析构函数没有返回类型,也没有参数,要注意delete的写法,elem是指向分配数组内存空间首元素的指针。

处理操作:  要先想一想需不需要判断操作的合法性!!!处理会改变sqlist

 【清空线性表】:其实就是把length【已存储的元素个数】置零,这样就相当于清空了,下一步可以覆盖内部的元素。

 【删除第几个元素】: bool ListDelete(int i, T & e )  验证操作合法性!!!bool表示操作成不成功,被删除的元素赋值给 e 返回,当然我们使用该函数的方式可以决定用不用这个返回 值。删一个元素要把它之后的所有元素前移,不是真的删,只是被覆盖。

 【插入至第几个位置】: bool ListInsert(int i,T e) 验证合法性,验证满没满(如果满了,分配的内存要double,要复制过来,要释放原来的,要更新listsize),i表示要将 e 存成该   列表 第i个元素,原来的第i个元素以及其后面的元素都要后移,先后移再插入,最后更新length

查询操作 :  ---查询不会改变 sqlist 可以在函数后面加上const以表示不会更改  ,要先想一想需不需要判断操作的合法性!!!         

【返回sqlist的length以及listsize】:

【返回第几个元素】: bool GetElem(int i, T & e)    bool类型返回值表示成功不成功,返回的元素赋值给e,这就是增加函数返回值的一种方法,使用引用。  

【返回满足给定关系元素位序】: int locateElem(T e, bool(*eq)(T,T) )const{ } , e是输入的用来对比的元素,后面是一个函数,使用时传入符合其形式的函数的名字即可,返回类型表示成功与否,而前面的int表示如果找到的话我们要返回的元素的 下标。但是这里有一个问题要注意,元素的位序是从1开始的,因为失败的话我们返回0,如果元素位序从零开始那我我们返回的int是位序还是表 示失败呢。

【返回满足给定关系元素前驱/后继】: bool PriorElem(T e, bool(*eq)(T,T)  )const{ } , 先使用locateElem找到该元素,如果没有前驱(第一个元素),如果没有后继(最后一个元素),如果失败就返回 false , 我们要先判断成功了么,然后再使用返回的元素

查询操作

  •      查询基础的:length listlize 
  •      查询第i个元素的内容。
  •      查询满足关系的元素位序
  •      查询满足关系元素的前驱和后继

处理操作

  •     插入
  •     删除
  •     清空    

  思考           上面的操作无论是查询还是处理,都要先考虑 【操作的合法性】比如说 查询越界(根本就没有第N个元素),根本就没有前驱,根本就没有后继,处理的时候也会引发这种合法性问题,比如插入元素之前sqlist就已经满了。

                      最后要重载下标运算符,这样就可以直接返回第几个元素了,这种方式真的很方便。

                      四查询,三处理,要记牢!!!

                                    

                                    

                                    

                                    

 

线性表—顺序存储结构

标签:

原文地址:http://www.cnblogs.com/hanbingyun/p/4457542.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!