《数据结构》线性表:顺序存储结构(顺序表的)实现示例代码
2014-08-15 00:34
746 查看
线性表(Sequential List)顺序存储结构, 占用连续内存,随机存取的方式,本代码实现初始化、插入、删除功能,使用VC6.0作为平台。
代码分三部分:
1.模板类的声明,放在一个头文件中(SequenList.h)。这样做的目的是,增加程序的复用性,可以在其它程序调用。本例中由2源文件调用。
2.类的定义,放在一个源文件(SequenList.cpp)中。
3.工程文件(sequenlistMain.cpp),针对实例,班级同学成绩进行实际操作。数据类型为整数(希望大家能换成一个结构体类型)。
1.SequenList.h
2.SequenList.cpp
3.sequenlistMain.cpp
代码分三部分:
1.模板类的声明,放在一个头文件中(SequenList.h)。这样做的目的是,增加程序的复用性,可以在其它程序调用。本例中由2源文件调用。
2.类的定义,放在一个源文件(SequenList.cpp)中。
3.工程文件(sequenlistMain.cpp),针对实例,班级同学成绩进行实际操作。数据类型为整数(希望大家能换成一个结构体类型)。
1.SequenList.h
const int MaxSize = 30; template <class T> //定义模板类SeqList class SeqList { public: SeqList( ) {length = 0;} //无参构造函数,建立空顺序表 SeqList(T a[ ], int n); //有参构造函数,建立长度为n的顺序表 ~SeqList( ) { } //析构函数 int Length( ) {return length;} //求线性表的长度 T Get(int i); //按位查找,在表中查找第i个元素 int Locate(T x ); //按值查找,在表中查找值为x的元素序号 void Insert(int i, T x); //插入操作,在表中第i个位置插入值为x的元素 T Delete(int i); //删除操作,删除表的第i个元素 void PrintList( ); //遍历操作,按序号依次输出各元素 private: T data[MaxSize]; //存放数据元素的数组 int length; //线性表的长度 };
2.SequenList.cpp
#include "SeqList.h" template <class T> SeqList<T> :: SeqList(T a[ ], int n) { if (n > MaxSize) throw "error"; for (int i = 0; i < n; i++) data[i] = a[i]; length = n; } template <class T> T SeqList<T> :: Get(int i) { if (i < 1 && i > length) throw "查找位置非法"; else return data[i - 1]; } template <class T> int SeqList<T> :: Locate(T x) { for (int i = 0; i < length; i++) if (data[i] == x) return i+1; //下标为i的元素等于x,返回其序号i+1 return 0; //退出循环,说明查找失败 } template <class T> void SeqList<T> :: Insert(int i, T x) { if (length >= MaxSize) throw "上溢错误"; if (i < 1 || i > length + 1) throw "位置"; for (int j = length; j >= i; j--) data[j] = data[j - 1]; //注意第j个元素存在数组下标为j-1处 data[i - 1] = x; length++; } template <class T> T SeqList<T> :: Delete(int i) { if (length == 0) throw "下溢"; if (i < 1 || i > length) throw "位置"; T x = data[i - 1]; //取出位置i的元素 for (int j = i; j < length; j++) data[j - 1] = data[j]; //注意此处j已经是元素所在的数组下标 length--; return x; } template <class T> void SeqList<T> :: PrintList( ) { for (int i = 0; i < length; i++) cout << data[i]; //依次输出线性表的元素值 }
3.sequenlistMain.cpp
#include <iostream> //引用输入输出流库函数的头文件 using namespace std; #include "SequenList.cpp" //引用顺序表的类声明和定义 void main( ) { int score[5]={99, 93, 89, 76,88}; SeqList<int> ScoreList(score, 5); cout<<"执行插入操作前数据为:"<<endl; ScoreList.PrintList( ); //输出所有元素 try { ScoreList.Insert(2,63); } catch (char *s) { cout<<s<<endl; } cout<<"执行插入操作后数据为:"<<endl; ScoreList.PrintList( ); //输出所有元素 cout<<"值为3的元素位置为:"; cout<<ScoreList.Locate(63)<<endl; //查找元素63,返回在单链表中位置 cout<<"执行删除第1个元素操作,删除前数据为:"<<endl; ScoreList.PrintList( ); //输出所有元素 try { ScoreList.Delete(1); //删除第1个元素 } catch (char *s) { cout<<s<<endl; } cout<<"删除后数据为:"<<endl; ScoreList.PrintList( ); //输出所有元素 }
相关文章推荐
- javascript实现数据结构:线性表--简单示例及线性表的顺序表示和实现
- 数据结构-线性表的顺序存储实现及各种操作代码
- 数据结构学习-线性表-顺序表的代码实现
- 数据结构 - 线性表(顺序表)C语言代码实现-处理整型数据(附详细解释)。 _清风明月
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- 数据结构之线性表――顺序存储结构(php代码实现)
- 线性结构的顺序存储和链式存储的实现代码(二)
- 《数据结构》线性表:链式存储结构实现示例代码一(构造,遍历,析构)
- 栈的顺序存储结构——顺序栈 图解和代码实现
- 数据结构-----线性表的顺序表示与实现
- 【数据结构和算法】【栈】顺序栈的代码实现
- 数据结构之队列――顺序存储结构(php代码实现――方法三)
- 数据结构---线性表的顺序实现
- C++实现顺序排序算法简单示例代码
- 数据结构:线性表的顺序存储--Java实现
- 线性表之顺序表 图解和代码实现
- 《数据结构》第五章 树和二叉树 扩展二叉实现代码示例
- 顺序表链式结构实现多项式相加。参照《数据结构》中的伪代码
- 线性表之顺序表 图解和代码实现
- java实现顺序结构线性列表的函数代码