数据结构:实验二线性表综合实验②单链表
来源:互联网 发布:java软件设计什么 编辑:程序博客网 时间:2024/06/04 19:24
一.实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二.实验内容
通过单链表建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
三.实验报告
1.实验代码如下:
#include<iostream> using namespace std;template <typename T>struct Node{ T data; Node<T> *next;};template <typename T>class LinkList {public: LinkList(); //无参构造函数,建立只有头结点的空链表 LinkList(T score[], int n); //构造函数 ~LinkList() //析构函数 { Node<T> *q; while (first != NULL) { q = first; first = first->next; delete q; } } void insert(int i, T x); //插入操作,在位置i插入元素x T Delete(int i);//删除操作,删除位置i的元素 T get(int i);//按位查找 int locate(T x); //按值查找 void print();//输出操作 private: Node<T> *first; //头指针 };template<class T>LinkList<T>::LinkList(){ first = new Node<T>; first->next = NULL;}template<typename T>LinkList<T>::LinkList(T score[], int n){ 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>void LinkList<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"位置非法"; else { s = new Node<T>; s->data = x; s->next = p->next; p->next = s; }}template<typename T>T LinkList<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 LinkList<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 LinkList<T>::locate(T x){ Node<T>*p; int count; p = first->next; count = 1; while (p != NULL) { if (p->data == x)return count; p = p->next; count++; } return count;}template<typename T>void LinkList<T>::print(){ Node<T>*p; p = first->next; while (p != NULL) { cout << p->data << " ";; p = p->next; }}void main(){ int score[5] = {66,71,68,45,93}; LinkList<int>student(score,5); cout<< "学生成绩:" ; student.print(); cout<<endl<<"在位置3插入成绩63,结果如下:" ; student.insert(3, 63); student.print(); cout<<endl<< "在位置2删除成绩为:"<< student.Delete(2); cout<<endl<< "删除后结果如下:" ; student.print(); cout <<endl<< "位置3的成绩为:"<< student.get(3); cout <<endl<< "成绩68所在位置为:"<< student.locate(68);}
2.实验结果
四.实验总结
通过单链表建立一个由5个学生成绩的顺序表,学生成绩分别为66, 71, 68, 45, 93 ,对表在位置2插入63,插入后学生成绩为66, 63,71, 68, 45, 93 ,删除位置3的成绩71,删除后为66, 63, 68, 45, 93 .
阅读全文
0 0
- 数据结构:实验二线性表综合实验②单链表
- 《数据结构》实验二 线性表综合实验
- 实验二线性表综合实验-单链表
- 数据结构:实验二线性表综合实验①顺序表
- 数据结构:实验二线性表综合实验③双链表
- 《数据结构》实验二:线性表综合实验——(2)单链表
- 实验二线性表综合实验
- 实验二 线性表综合实验(1)
- 实验二 线性表综合实验
- 实验二线性表综合实验3
- 实验二线性表综合实验2
- 实验二线性表综合实验-双链表
- 实验二线性表综合实验4
- 实验二 线性表综合实验之单链表
- 实验二 线性表综合实验(单链表)
- 实验二 线性表综合实验之《单链表》
- 实验二 线性表综合实验——单链表
- 实验二:线性表综合实验(1.单链表)
- Pandas数据排序
- leetcode 695. Max Area of Island 解法
- 学习日志————国庆总结
- 0-1背包问题-回溯&贪心算法-C#Demo
- 51NOD-1011 最大公约数GCD
- 数据结构:实验二线性表综合实验②单链表
- html知识
- 每天一篇博客,绝不断更,以此激励自己
- 10月8日学习笔记
- android studio 设置
- Python 红黑树
- 无法启动服务,依赖服务或组无法启动,失败 1068
- 破解百度网盘限速
- java反射机制