数据结构:实验二线性表综合实践⑤间接寻址
2017-10-12 09:43
453 查看
一.实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二.实验内容
通过间接寻址建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
三.实验报告
1.实验代码如下:
2.实验结果
四.实验总结
通过间接寻址建立一个由5个学生成绩的顺序表,学生成绩分别为66, 71, 68, 45, 93 ,对表在位置3插入63,插入后学生成绩为66, 71, 63,68, 45, 93 ,删除位置2的成绩71,删除后为66, 63, 68, 45, 93 .
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二.实验内容
通过间接寻址建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
三.实验报告
1.实验代码如下:
#include<iostream> using namespace std; const int Maxsize = 100; template<typename T> struct Node { T data; Node<T> *next; }; template<typename T> class InA { public: InA();//无参构造函数 InA(T score[], int n);//有参构造函数 virtual ~InA();//析构函数 void print();//遍历操作 T get(int i);//按位查找操作 int Locate(T x);//按值查找操作 void insert(int i, T x);//插入操作 T Delete(int i);//删除操作 private: Node<T> *first; //头指针 int length; //结点数量 Node<T> *address[Maxsize]; //结点指针数组 }; temp 4000 late<typename T> InA<T>::InA() { first = new Node<T>; first->next = NULL; } template<typename T> InA<T>::InA(T score[], int n) { if (n > Maxsize) throw("溢出"); Node<T> *s; first = new Node<T>; first->next = NULL; //初始化一个空链表 for (int i = n - 1; i >= 0; i--) { s = new Node<T>; s->data = score[i]; //为每个数组元素建立一个结点 s->next = first->next; first->next = s; //将结点s插入头结点之后 } } template<typename T> InA<T>::~InA() //析构函数 { Node<T> *q; while (first != NULL) { q = first; first = first->next; delete q; } } template<typename T> void InA<T>::insert(int i, T x) { Node<T>*p, *s; int count; p = first; count = 0; while (p != NULL&&count<i - 1) { p = p->next; count++; } if (p == NULL)throw"位置非法"; s = new Node<T>; s->data = x; s->next = p->next; p->next = s; length++; } template<typename T> T InA<T>::Delete(int i) { Node<T> *q, *p; T x; int count; p = first; count = 0; //注意P指针要指向头结点 while (p != NULL&&count<i - 1) //此操作目的是找到i-1个结点 { p = p->next; count++; } if (p == NULL || p->next == NULL)throw"位置"; //结点p不存在或p后继结点不存在 else { q = p->next; x = q->data; //暂存被删结点 p->next = q->next; delete q; return x; } } template<typename T> T InA<T>::get(int i) { Node<T>*p; int count; p = first->next; count = 1; while (p != NULL&&count<i) { p = p->next; count++; } if (p == NULL)throw"位置非法"; else return p->data; } template<typename T> int InA<T>::Locate(T x) { Node<T>*p; int count = 1; p = first->next; while (p != NULL) { if (p->data == x)return count; p = p->next; count++; } return count; } template<typename T> void InA<T>::print() { Node<T>*p; p = first->next; while (p != NULL) { cout << p->data << " ";; p = p->next; } } void main() { int score[5] = { 66,71,68,45,93 }; InA<int>student(score, 5); //创建对象 cout << "学生成绩:"; student.print(); cout << endl << "在位置3插入成绩63,结果如下:" ; student.insert(3, 63); student.print(); cout << endl <<"在位置2删除成绩为:" << student.Delete(2) << "删除后结果如下:" ; student.print(); cout << endl << "位置3的成绩为:" << student.get(3) ; cout << endl << "成绩63所在位置为:" << student.Locate(63) ; }
2.实验结果
四.实验总结
通过间接寻址建立一个由5个学生成绩的顺序表,学生成绩分别为66, 71, 68, 45, 93 ,对表在位置3插入63,插入后学生成绩为66, 71, 63,68, 45, 93 ,删除位置2的成绩71,删除后为66, 63, 68, 45, 93 .
相关文章推荐
- 信管16数据结构:实验二 线性表综合实验
- 实验二 线性表综合实验——间接寻址
- 《数据结构》实验二:线性表综合实验——(5)间接寻址
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表---3379
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 【实验报告】数据结构实验二:线性表的实验
- 数据结构图的综合实验代码
- c++数据结构之线性表:间接寻址类模板的实现
- 数据结构实验之查找七:线性之哈希表
- 实战数据结构(7)_线性表的综合操作
- 数据结构实验之查找七:线性之哈希表
- 3379-数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验1 线性表的有关操作
- 数据结构实验之查找七:线性之哈希表