实验二:学生成绩之单链表操作
来源:互联网 发布:中世纪2优化9教皇国 编辑:程序博客网 时间:2024/04/28 18:00
一.实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二..实验内容
1.建立一个由n个学生成绩的单链表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二..实验内容
1.建立一个由n个学生成绩的单链表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
三. 代码实现
#include<iostream>using namespace std;template<class T>struct Node{T data;Node<T>*next; } ; template<class T> class LinkList { public: LinkList(); LinkList(T a[],int n); ~LinkList(); int Locate(T x); void Insert(int i,T x); T Delete(int i); void PrintList(); private: Node<T>*first; }; #include<iostream> using namespace std; template<class T> LinkList<T>::LinkList() { first=new Node<T>; first->next=NULL; } template<class T> LinkList<T>::LinkList(T a[],int n) { Node<T>*r,*s; first=new Node<T>; r=first; for(int i=0;i<n;i++) {s=new Node<T>; s->data=a[i]; r->next=s;r=s; } r->next=NULL; } template<class T> LinkList<T>::~LinkList() { Node<T>*q=NULL; while(first!=NULL) { q=first; first=first->next; delete q; } } template<class T>void LinkList<T>::Insert(int i,T x){Node<T>*p=first,*s=NULL;int count=0;while(p!=NULL&&count<i-1){p=p->next;count++;}if(p==NULL)throw"位置";else{s=new Node<T>;s->data=x;s->next=p->next;p->next=s;} } template<class T>T LinkList<T>::Delete(int i){Node<T>*p=first,*q=NULL;T x;int count=0;while(p!=NULL&&count<i-1){p=p->next;count++;}if(p==NULL||p->next==NULL)throw"位置";else{q=p->next;x=q->data;p->next=q->next;delete q;return x;} } template<class T> int LinkList<T>::Locate(T x) { Node<T>*p=first->next;int count=1; while(p!=NULL) { if(p->data==x)return count; p=p->next; count ++; } return 0; } template<class T> void LinkList<T>::PrintList() { Node<T>*p=first->next; while(p!=NULL) { cout<<p->data<<" "; p=p->next; } cout<<endl; } int main() { int grade[9]={53,44,15,45,59,23,38,56,57}; LinkList<int>A(grade,9); cout<<"插入成绩操作前数据为:"<<endl; A.PrintList(); try { A.Insert(2,57); } catch(char*s) { cout<<s<<endl; } cout<<"插入成绩操作后数据为:"<<endl; A.PrintList(); cout<<"值为59的元素位置为:"; cout<<A.Locate(59)<<endl; cout<<"删除第一个学生成绩操作前数据为:"<<endl; A.PrintList(); try { A.Delete(1); } catch(char*s) { cout<<s<<endl; } cout<<"执行删除成绩操作后数据为:"<<endl; A.PrintList(); }
四.结果
五.实验心得
先弄懂每个功能的算法,是什么意思,要是弄懂了就会容易很多了。
而且要注意小心点打代码,每次都会有很多的语法错误,这个编译系统很难找出来,而且有时候会显示出一堆的错误。
对实验还不是很熟悉,还是要多去练习吧。
阅读全文
0 0
- 实验二:学生成绩之单链表操作
- 实验二:单链表实现N个学生成绩操作
- 实验二 单链表实现学生成绩
- 实验二 创建学生成绩-单链表
- 实验二:顺序表实现N个学生成绩操作
- 实验二 顺序表实现学生成绩
- 实验二 双链表实现学生成绩
- 实验二 间接寻址实现学生成绩
- 实验二 创建学生成绩-顺序表
- 实验二 创建学生成绩-双链表
- 实验二 创建学生成绩-间接寻址
- 单链表实现学生成绩操作
- 实验2.2 单链表实现学生成绩管理
- C++实验 学生成绩
- 第十六周实验报告(任务二)【学生成绩】
- 实验二 静态链表实现学生成绩
- 实验二 创建学生成绩-静态链表
- 数据结构实验二 链式存储结构----单向链表的有关操作(学生成绩信息C语言)
- Boosteroid——人人可用的个人云计算机
- 局部和全局变量浅析
- Python Scrapy运行爬虫时出现ModuleNotFoundError(win32api)
- 优先队列 使用 (补一发)
- 运行mapreduce 程序报错 NoSuchMethodException
- 实验二:学生成绩之单链表操作
- PHP内置对象
- java中子类static方法隐藏父类static方法
- COCOS2D 之 lua 接口的使用
- 关于矩阵 线性方程组
- <10/11>打卡随笔
- 跨域SSO单点登录的简易实现和代理服务
- What is Gas Limit in Ethereum?
- 如何设计数据库(数据库设计原则)