线性表综合实验之单链表的实现
2017-10-13 22:06
417 查看
#include<iostream> using namespace std; template<class T> struct Node{ T data; Node<T> *next; }; template<class T> class Linklist { private: Node<T> *first; public: Linklist(){first=new Node<T>;first->next=NULL;} Linklist(T a[],int n); ~Linklist(){} int Length(); T Number_get(int i); int Location_get(T x); void Insert(int i,T x); T Delete(int i); void Printlist(); }; 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> int Linklist<T>::Length() { Node<T> *p; p=first->next; int count=0; while(p!=NULL) { p=p->next; count++; } return count; } template<class T> T Linklist<T>::Number_get(int i) { Node<T> *p; p=first->next; for(int count=1;count<i;count++) { p=p->next; count++; } if(p==NULL) throw("位置错误"); else return p->data; } template<class T> int Linklist<T>::Location_get(T x) { Node<T> *p; 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>::Insert(int i,T x) { Node<T> *p; p=first; for(int k=1;k<=i-1;k++) { p=p->next; } Node<T> *s ; s=new Node<T>; s->data=x; s->next=p->next; p->next=s; } template<class T> T Linklist<T>::Delete(int i) { int x; Node<T> *p; p=first; for(int j=1;j<i;j++) { p=p->next; } Node<T> *s; s=new Node<T>; s=p->next; x=s->data; p->next=s->next; delete s; return x; } template<class T> void Linklist<T>::Printlist() { Node<T> *p; p=first->next; while(p!=NULL) { cout<<p->data<<" "; p=p->next; } cout<<endl; } int main() { int stu[10]={90,87,95,77,80,91,74,89,92,97}; Linklist<int> student(stu,10); cout<<"表的长度为:"<<student.Length()<<endl; cout<<"全部学生成绩如下:"<<endl; student.Printlist(); student.Number_get(3); cout<<"第三位学生的成绩为:"<<student.Number_get(3)<<endl; cout<<"成绩为90的学生序号为:"<<student.Location_get(90)<<endl; cout<<"在序号为1的学生后面插进新成绩80:"<<endl; student.Insert(1,80); student.Printlist(); cout<<"删除序号为2的学生的成绩:"<<endl; student.Delete(2); student.Printlist(); return 0; }
一、实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。二、实验时间
准备时间为第3周到第4周,具体集中实验时间为第4周第2次课。2个学时。三、实验内容
1 、建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。2、用单链表实现。
四、实验结果截图
五、实验心得
第一次进行单链表的实现操作,期间还是遇到了不少的问题。本人对C++语言的熟练程度还不够,所以在实验当中需要借助书本或者网上的一些讲解。一开始是由书本的例题的算法进行初步的编写,但是由于算法不是真正完整的程序,故在编译当中肯定会出现不少的错误,这时候就依照程序的提示,一点点的进行修改和编译,实在不会修改的时候就会百度相关的语句讲解,直到程序最后成功运行。这样的方法比较笨拙而且效率不是很高,但是这是我至今发现自己最能掌握的程度,而且在这个过程当中,可以正确地发现自己对操作不懂不掌握的地方,随后的独立思考与设法解决问题更是有助于自己理解相关的知识。
相关文章推荐
- 实验二 线性表综合实验之《单链表》
- 实验二 线性表综合实验之单链表
- 线性表综合实验之静态链表的实现
- 实验二:线性表实验-单链表的实现
- 实验二 线性表综合实验——单链表
- 实验二 线性表综合实验之《间接寻址》
- 数据结构之线性表――链式存储结构之单链表(php代码实现)
- 实验一:线性表的基本操作实现及其应用(C++)
- 使用C11的原子操作来实现线性单链表操作
- 实验一线性表的基本操作实现及其应用
- 《数据结构》实验二:线性表综合实验——(4)静态链表
- 实验二 线性表综合实验——间接寻址
- (线性)单链表的C语言实现--保持有序
- [数据结构]线性表之单链表的类模板实现
- 实验二线性表综合实验-顺序表
- 终于完成~《数据结构》实验二:线性表的实验(实现一个N个学生成绩的顺序表)
- 实验一线性表的基本操作实现及其应用
- 实验二 线性表综合实验之静态链表
- 实验一线性表的基本操作实现及其应用(JavaScript实现)
- 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数将其返回。 ⑤ 建立两个