线性表综合实验—单链表
来源:互联网 发布:python win32api 截屏 编辑:程序博客网 时间:2024/05/22 08:11
实验二 线性表综合实验—单链表
一.实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二.实验内容
1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
三.源代码
#include "stdafx.h"#include<iostream>using namespace std;template<class DT>struct Node{DT data;Node<DT> *next;};template <class DT>class LinkList{public:LinkList();LinkList(DT a[], int n);~LinkList();DT Get(int i);int Locate(DT x);void Insert(int i, DT x);DT Delete(int i);void PrintList();private:Node <DT>*first;};template <class DT>void LinkList <DT>::PrintList() //遍历算法{Node<DT>*p = first->next;while (p != NULL){cout << p->data<<" ";p = p->next;}cout << endl;}template <class DT>DT LinkList<DT>::Get(int i) //按位查找{Node<DT> *p = first->next; int count = 1;while (p != NULL && count < i){p = p->next;count++;}if (p == NULL)throw"位置";else return p->data;}template <class DT>int LinkList<DT>::Locate(DT x) //按值查找算法{Node<DT>*p = first->next; int count = 1;while (p != NULL){if (p->data == x) return count;p = p->next;count++;}return 0;}template <class DT>void LinkList<DT>::Insert(int i, DT x) //插入算法{Node<DT> *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<DT>; s->data = x;s->next = p->next; p->next = s;}}template <class DT>LinkList <DT>::LinkList() //无参构造函数{first = new Node<DT>;first->next = NULL;}template <class DT>LinkList<DT>::LinkList(DT a[], int n) {Node<DT> *s,*r;first = new Node<DT>; r = first;for (int i = 0; i < n; i++){s = new Node<DT>; s->data = a[i];r->next = s; r = s;}r->next = NULL;}template <class DT>DT LinkList <DT>::Delete(int i) //删除算法{Node<DT>*p = first, *q = NULL;DT 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 DT>LinkList <DT>::~LinkList() //析构函数{Node<DT>*q = NULL;while (first != NULL){q = first;first = first->next;delete q;}}int main(){int score[8] = { 99,59,75,77,80,30,45,66 };LinkList<int> List(score, 8);List.PrintList(); //遍历学生分数 cout << List.Get(4) << endl; //取第4个位置的学生分数 List.Insert(3, 100); //在第三个位置插入学生分数 List.PrintList(); //再次遍历 cout << List.Locate(77) << endl; //获取分数为77的位置 cout << List.Delete(2) << endl; //删除第2个分数 List.PrintList(); //再次遍历 return 0;}
四.实验总结
运行结果如上图所示(由于软件本身问题(应该是),如果显示中有中文的话则会出现乱码现象,所以在运行结果中并没有有中文解释)。
在课堂的时候听得懂,但是在操作实验却会出现很多问题,比如,类型的定义错误等等。在此次实验中并不是做得很顺利,但也学到并解决了不少不懂得知识点,所以在实验中才能更好地知道自己的不足之处。
阅读全文
0 0
- 线性表综合实验—单链表
- 实验二 线性表综合实验——单链表
- 实验二线性表综合实验-单链表
- 数据结构线性表的综合实验——单链表
- 线性表综合实验——双链表
- 线性表综合实验--双链表
- 实验二 线性表综合实验之单链表
- 实验二 线性表综合实验(单链表)
- 实验二 线性表综合实验之《单链表》
- 数据结构:实验二线性表综合实验②单链表
- 实验二:线性表综合实验(1.单链表)
- 实验二 线性表综合实验之《单链表》
- 实验二 线性表综合实验——顺序表
- 实验二 线性表综合实验——双链表
- 实验二 线性表综合实验——间接寻址
- 《数据结构》实验二:线性表综合实验——(2)单链表
- 《数据结构》实验二 线性表综合实验
- 实验二线性表综合实验
- NKOJ 3792 分糖果(差值dp+前缀和优化)
- HDU 4738 浅谈无向图边双连通求TarJAn求桥及如何“炸桥”
- Matlab安装过程中显示“插入DVD2以继续”弹窗的解决方法(简单快速)
- 正则表达式
- Android View深入解析(一)基础知识VelocityTracker,GestureDetector,Scroller
- 线性表综合实验—单链表
- hdu3639 强连通+缩点 tarjan算法
- windows命令行一些基础mysql命令
- 数论——【模板】线性筛素数
- Python 多线程运行多个job的框架
- 点云PCL估计一个点云的表面法线
- Leetcode (一)——数组:Remove Duplicates from Sorted Array II
- Banner轮播图
- NOIP2016 天天爱跑步 (LCA,树上差分)