《数据结构》线性表(顺序存储结构(顺序表的)实现示例代码)

线性表(Sequential List)顺序存储结构, 占用连续内存,随机存取的方式,本代码实现初始化、插入、删除功能,使用VC6.0作为平台。
代码分三部分:
1.模板类的声明,放在一个头文件中(SequenList.h)。这样做的目的是,增加程序的复用性,可以在其它程序调用。本例中由2源文件调用。
2.类的定义,放在一个源文件(SequenList.cpp)中。
3.工程文件(sequenlistMain.cpp),针对实例,班级同学成绩进行实际操作。数据类型为整数(希望大家能换成一个结构体类型)。
1.SequenList.h

const int MaxSize = 30; template //定义模板类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 SeqList :: SeqList(T a[ ], int n) { if (n > MaxSize) throw "error"; for (int i = 0; i < n; i++) data[i] = a[i]; length = n; }template T SeqList :: Get(int i) { if (i < 1 && i > length) throw "查找位置非法"; else return data[i - 1]; }template int SeqList :: Locate(T x) { for (int i = 0; i < length; i++) if (data[i] == x) return i+1; //下标为i的元素等于x,返回其序号i+1 return 0; //退出循环,说明查找失败 }template void SeqList :: 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 T SeqList :: 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 void SeqList :: PrintList( ) { for (int i = 0; i < length; i++) cout << data[i]; //依次输出线性表的元素值 }


3.sequenlistMain.cpp

#include //引用输入输出流库函数的头文件 using namespace std; #include "SequenList.cpp"//引用顺序表的类声明和定义 void main( ) { int score[5]={99, 93, 89, 76,88}; SeqList ScoreList(score, 5); cout<<"执行插入操作前数据为:"<


【《数据结构》线性表(顺序存储结构(顺序表的)实现示例代码)】

    推荐阅读