线性表的线性存储及其运算
2013-05-18 13:28
323 查看
1、顺序表的基本特点:
表中各元素存放在连续的存储空间中
表中各元素在存储器中的存放顺序与他们在线性表中的逻辑顺序相同
2、顺序表的顺序存储
在C/C++中,存储空间的分配可以是静态的,也可以是动态的。为了提高存储空间的利用率、增强灵活性和实用性,对表示数组表的数组空间采用动态分配。在初始化顺序表时,申请一个指定大小数组空间,如果在使用过程中出现“表溢出”,则重新申请一个更大的空间;当表中元素很少或顺序表以及撤销时,则要释放多余的存储空间。
线性表的数组上界可以通过定义MaxSize给出,线性表的数据元素类型为ElemType,线性表的长度为len,存放线性表的数组指针为list,则顺序表的表结构定义如下:
3、顺序表的基本运算
查找
插入
删除
表中各元素存放在连续的存储空间中
表中各元素在存储器中的存放顺序与他们在线性表中的逻辑顺序相同
2、顺序表的顺序存储
在C/C++中,存储空间的分配可以是静态的,也可以是动态的。为了提高存储空间的利用率、增强灵活性和实用性,对表示数组表的数组空间采用动态分配。在初始化顺序表时,申请一个指定大小数组空间,如果在使用过程中出现“表溢出”,则重新申请一个更大的空间;当表中元素很少或顺序表以及撤销时,则要释放多余的存储空间。
线性表的数组上界可以通过定义MaxSize给出,线性表的数据元素类型为ElemType,线性表的长度为len,存放线性表的数组指针为list,则顺序表的表结构定义如下:
typedef int ElemType;//自定义类型 struct SeqList { ElemType *list;//存储线性表的数组指针 int len;//当前线性表长度 int MaxSize;//线性表最大长度 };
3、顺序表的基本运算
查找
//在顺序表L中查找第一个关键字值等于value的元素 //若查找成功返回其位置,否则返回0 int FindList(SeqList &L,ElemType value) { for(int i=0;i<L.len;i++) if(L.list[i].key==value) return i; return -1; }
插入
//在指定位置插入元素 int insertList(SeqList &L,int i,const ElemType &item) { //表满的情况 if(L.len==MaxSize) { cout<<"overflow"<<endl; exit(1); } //处理不合理的插入位置 if(i<0) i=0; if(i>L.len-1)i=L.len; //第i个元素至最后一个元素平移 for(int j=L.len-1;j>=i;j--) L.list[j+1]=L.list[j]; //插入元素,返回表长度 L.list[i]=item; return L.len++; }
删除
//删除指定位置的元素 int DeleteList(SeqList &L,int i) { //空表,无法删除,退出 if(L.len==0) { cout<<"L is empty!"<<endl; exit(1); } //无效的删除位置,退出 if(i<0||i>L.len-1) { cout<<"Wrong Location:"<<i<<endl; exit(1); } //从i+1到最后一个位置的元素向前平移 for(int j=i+1;j<L.len;j++) L.list[i-1]=L.list[i]; return L.len--; }
相关文章推荐
- 栈的链式存储结构及其基本运算的实现
- MATLAB 线性运算之减法运算及其应用
- 深入剖析浮点存储及其运算规则
- MATLAB 线性运算之减法运算及其应用
- 栈的链式存储结构及其基本运算的实现
- 线性表的链式存储及其接口函数C++类实现
- 【Java数据结构学习笔记之一】线性表的存储结构及其代码实现
- 数据结构(严蔚敏、吴伟民)——读书笔记-2、 线性表及其基本运算、顺序存储结构
- 栈的链式存储及其基本运算
- JAVA数据结构 线性表的链式存储及其实现
- 数据结构(严蔚敏、吴伟民)——读书笔记-2、 线性表及其基本运算、顺序存储结构
- 栈的链式存储及其基本运算
- 【数据结构】线性结构:存储&运算&时间复杂度
- 栈的链式存储结构及其基本运算的实现
- 数据结构笔记(一)线性表的顺序表示和基本操作及其顺序表实现的集合运算(A-B)U(B-A)实例
- 线性代数-【2-(3-4)】矩阵及其运算
- 线性代数复习-矩阵及其运算
- 清华大学线性代数—向量及其运算
- 线性代数:第二章 矩阵及其运算:逆矩阵、分块矩阵
- 运算放大器及其线性应用