实验二.单链表
来源:互联网 发布:win8怎么清理c盘 知乎 编辑:程序博客网 时间:2024/05/16 09:24
一.实验目的
巩固间接寻址的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二. 实验内容
建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。用单链表来实现,分别输出结果。
三.代码
#ifndef LinkList_H#define LinkList_Htemplate<class DataType>struct Node{ DataType data; Node<DataType>*next;};template<class DataType>class LinkList{ public: LinkList(); LinkList(DataType a[],int n); ~LinkList(); int Locate(DataType x); void Insert(int i,DataType x); DataType Delete(int i); void PrintList(); private: Node<DataType>*first;};#endif#include<iostream>using namespace std;#include"LinkList.h"template<class DataType>LinkList<DataType>::LinkList(){ first=new Node<DataType>; first->next=NULL;}template<class DataType>LinkList<DataType>::LinkList(DataType a[],int n){ Node<DataType>*r,*s; first=new Node<DataType>; r=first; for(int i=0;i<n;i++) { s=new Node<DataType>; s->data=a[i]; r->next=s;r=s; } r->next=NULL;}template<class DataType>LinkList<DataType>::~LinkList(){ Node<DataType>*q=NULL; while(first!=NULL) { q=first; first=first->next; delete q; }}template<class DataType>void LinkList<DataType>::Insert(int i,DataType x){ Node<DataType>*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<DataType>;s->data=x; s->next=p->next;p->next=s; }}template<class DataType>DataType LinkList<DataType>::Delete(int i){ Node<DataType>*p=first,*q=NULL; DataType 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 DataType>int LinkList<DataType>::Locate(DataType x){ Node<DataType>*p=first->next; int count=1; while(p!=NULL) { if(p->data==x) return count; p=p->next; count++; } return 0;}template<class DataType>void LinkList<DataType>::PrintList(){ Node<DataType>*p=first->next; while(p!=NULL) { cout<<p->data<<""; p=p->next; } cout<<endl;}#include<iostream>using namespace std;#include"LinkList.cpp"void main(){ int r[6]={98,67,86,100,92,58}; LinkList<int>L(r,6); cout<<"执行插入操作前所有成绩为:"<<endl; L.PrintList(); try { L.Insert(2,88); } catch (char *s) { cout<<s<<endl; } cout<<"执行插入操作后所有成绩为:"<<endl; L.PrintList(); cout<<"成绩为58的元素位置为:"; cout<<L.Locate(58)<<endl; cout<<"执行删除操作前所有成绩为:"<<endl; L.PrintList(); try { L.Delete(1); } catch(char *s) { cout<<s<<endl; } cout<<"执行删除操作后所有成绩为:"<<endl; L.PrintList();}
四.运行结果
执行插入操作前所有成绩为:
98 67 86 100 92 58
执行插入操作后所有成绩为:
98 88 67 86 100 92 58
成绩为58的元素位置为:7
执行删除操作前所有成绩为:
98 88 67 86 100 92 58
执行删除操作后所有成绩为:
88 67 86 100 92 58
press any key to continue
(http://img.blog.csdn.net/20171010221441403?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hhaWNoYWk5OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
五.总结和心得
和上一篇的顺序表差不多,在单链表基本操作的基础上稍加修改,把它转换为显示成绩。通过这个实验巩固了单链表的知识,实验过程中发现自己存在许多不足,知识掌握不牢固,还需要多加练习。
阅读全文
0 0
- 实验二 单链表实验
- 实验二 单链表
- 实验二.单链表
- 实验二之单链表
- 实验二 单链表实现
- 实验二之单链表
- 【实验二】单链表的实验验证
- 实验二线性表综合实验-单链表
- 实验二 单链表的实现
- 实验二 第二部分 单链表
- 数据结构实验二之单链表
- 实验二——单链表
- 实验二:单链表的实现
- 数据结构实验二(单链表)
- 【实验二】串口实验
- 实验一&实验二
- 实验二
- 实验二
- libevent源码学习-----Reactor模型
- checked exception和unchecked exception的区别
- mac下安装hadoop(一)
- docker简介、虚拟机与Docker有何不同
- java技术手册
- 实验二.单链表
- 1.基础语法(1) print语句
- java面试编程题(数组和链表相关)
- 做数组题时,出现的与返回值有关的问题
- 计算机文化课--摩尔定律
- Git branch 简介
- 2017秋季学期书单
- 静静的夜
- java开发公众号笔记(1)