线性表综合实验—单链表

来源:互联网 发布: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
原创粉丝点击