实验二 创建学生成绩-间接寻址
来源:互联网 发布:知乎什么是成功的婚姻 编辑:程序博客网 时间:2024/05/02 19:45
一、实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
三、代码
#include<iostream> using namespace std; const int Maxsize = 100; template<typename T> struct Node { T data; Node<T> *next; }; template<typename T> class inadd{ public: inadd();//无参构造函数 inadd(T score[],int n);//有参构造函数 virtual ~inadd();//析构函数 void print();//遍历操作 T get(int i);//按位查找操作 int Locate(T x);//按值查找操作 void insert(int i,T x);//插入操作 T Delete(int i);//删除操作 bool changeList(int i, T x); //改变某一结点的值 i为节点的位置,x为替换的值 private: Node<T> *first; //头指针 int length; //结点数量 Node<T> *address[Maxsize]; //结点指针数组 }; template<typename T> inadd<T>::inadd() { first=new Node<T>; first->next=NULL; } template<typename T> inadd<T>::inadd(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> inadd<T>::~inadd() //析构函数 { Node<T> *q; while(first!=NULL) { q=first; first=first->next; delete q; } } template<typename T> void inadd<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 inadd<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 inadd<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 inadd<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 0; } template<typename T> void inadd<T>::print() { Node<T>*p; p=first->next; while(p!=NULL) {cout<<p->data<<" ";; p=p->next; } } void main() { float score[8]={69,52,99,85,76,89,78,54}; inadd<float>student(score,8); //创建对象 cout<<"学生数据结构成绩"<<endl; student.print();cout<<endl; cout<<"在位置3插入成绩66,结果如下:"<<endl; student.insert(3,66); student.print(); cout<<endl; cout<<"在位置2删除成绩为:"<<student.Delete(2)<<endl;cout<<"删除后结果如下:"<<endl; student.print(); cout<<endl; cout<<"位置3的成绩为:"<<student.get(3)<<endl; cout<<"成绩76所在位置为:"<<student.Locate(76)<<endl; }四、运行结果
阅读全文
0 0
- 实验二 创建学生成绩-间接寻址
- 实验二 间接寻址实现学生成绩
- 创建学生成绩间接寻址
- 数据结构|创建学生成绩的间接寻址(实验2.5)
- 数据结构|创建学生成绩的间接寻址(实验2.5)
- 创建学生成绩的间接寻址
- 实验二间接寻址
- 实验二之间接寻址
- 实验二 创建学生成绩-顺序表
- 实验二 创建学生成绩-单链表
- 实验二 创建学生成绩-双链表
- 数据结构实验(二):间接寻址
- 实验二 线性表综合实验之间接寻址
- 实验二 线性表综合实验(间接寻址)
- 实验二 线性表综合实验之《间接寻址》
- 实验二 线性表综合实验——间接寻址
- 实验二 线性表综合实验之《间接寻址》
- 实验二 创建学生成绩-静态链表
- 基于mariadb安装hive
- hdu 6029 Graph Theory(贪心)
- eclipse操作指南
- 为什么Objective-C的方法调用要用方括号
- Android屏幕适配详解
- 实验二 创建学生成绩-间接寻址
- 智能餐厅摆动手势点餐人脸识别支付
- DispatcherServlet 和 ContextLoaderListener 的关系,到底用哪个?
- 趣图:客户问我是否在 IE 下测试过了
- 01什么是docker
- Android Bitmap加载内存占用彻底分析
- 调用其他类成员变量的方法
- 去掉移动端alert和confirm弹出框携带url链接
- Ruby学习笔记(15)_文件输入和输出