《数据结构》实验二:?????线性表实验
一..实验目的
?????巩固线性表的数据结构,学会线性表的应用。
1.回顾线性表的逻辑结构,线性表的物理存储结构和常见操作。
2.学习运用线性表的知识来解决实际问题。
3.进一步巩固程序调试方法。
4.进一步巩固模板程序设计。
二.实验时间
???准备时间为第2周到第4周,具体集中实验时间为第4周第2次课。2个学时。
三..实验内容
1.建立一个N个学生成绩的顺序表,对表进行插入、删除、查找等操作。分别输出结果。
要求如下:
用顺序表来实现。
头文件
?
?
#ifndef shunxu_h #define shunxu_h
const? int max = 100; template<class datatype> class shunxu { public: ?shunxu(){ length = 0; } ?shunxu(datatype a[],int n); ?void insert(datatype x,int n); ?int delet(int n); ?int locat(int n); ?void print();
private:
?int data[max]; ?int length; ??? };
template<class datatype> shunxu<datatype>::shunxu(datatype a[],int n) {
?if (n > max)throw "error"; ?if (n < 1)throw"位置异常"; ?for (int i = 0; i < n; i++) ?{ ??data[i] = a[i]; ?} ?length = n; }
template<class datatype> void shunxu<datatype>::insert(datatype x,int n) { ?int j; ?if (length > max)throw "error"; ?if (n<1 || n>length + 1)throw"输入错误"; ?for (j = length; j >= n; j--) ??data[j] = data[j - 1]; ?data[n - 1] = x; ?length++;
}
template<class datatype> int shunxu<datatype>::delet(int n) {
?int x = data[n - 1];//怎么把位置清空 ?for (int j= n-1; j < length; ++j) ??data[j] = data[j+1]; ? ?length--; ?return x; ? }
template<class datatype> int shunxu<datatype>::locat(int n) { ?int j; ?for (j = length - 1; data[j] != n; j--);
?if (data[j] == n) ??cout << "输入的元素位置是:" << j + 1 << endl; ? ?return 0; }
template<class datatype> void shunxu<datatype>::print() { ?for (int j = 0; j < length; j++) ??cout << data[j] << "? "; ?cout<<endl; }
#endif
?
?
主函数
#include<iostream> #include? "shunxu.h" using namespace std;
?
void main() { ?int y,g; ?int a[] = { 5,6,7,8,9,15,16 };
?shunxu<int> s(a,7); ?cout << "输入的数据为:" << endl; ?s.print(); ?cout << "插入一个新元素2在第三的位置上" << endl; ?s.insert(2,3); ?s.print(); ?cout << "删除第二个数据后,信息为:"<<endl; ?s.delet(2); ?s.print(); ?cout << "查找某个元素的位置,输入要查找的元素:"<<endl; ?cin >> g; ??? s.locat(g); ?cin >> y; ? }
?
?
构造函数和插入操作
?
删除、查找,定位等操作代码
?
?
主函数调用时
?
?
?
?
?
插入数据:
?
?
删除第二个数据后
?
查找元素
(编辑:ASP站长网)
|