广州大学学生实验报告
开课实验室:计算机科学与工程实验(电子楼417) 2018年5月09日
学院 |
计算机科学与教育软件学院 |
年级、专业、班 |
网络161 |
姓名 |
卟咚君 |
学号 |
1606100*** |
|
实验课程名称 |
数据结构实验 |
成绩 |
|
|||||
实验项目名称 |
实验一 链式存储结构的基本操作 |
指导老师 |
** |
|||||
一、实验目的 掌握线性的定义及基本操作,用链表实现:遍历、查找、插入、删除、翻转。 二、使用仪器、器材 微机一台 操作系统:WinXP 编程软件:C++ 三、实验内容及原理 (1)用随机函数生成8个3位整数(100~999),把这些整数存于链表中; (2)输出链表的内容; (3)读入一个整数,查看该整数是否在表中,若在,输出其位置(首位置为1); (4)读入一个整数,以及要插入的位置,把该整数插入到链表中,输出链表的内容(要求判断输入的位置是否合理); (5)读入一个整数,若该整数在链表里,删除该整数,输出链表的内容; (6)把链表的内容翻转,输出链表的内容。 思路:通过定义一个class类 ListNode,表示链表的结点; 通过定义一个class类 SingleList ,表示链表,封装了对链表的各种操作: void MakeEmpty(); //清空链表 int Length(); //返回链表的长度 int Find(Type item); //在链表中查询数据item,找到则返回相应链表结点的位置,否则返回-1 bool Insert(Type item, int n ); //在位置n的结点前插入一个新结点,新结点的data值为item ListNode<Type>* Get(int pos); //查询链表的第n个链表结点,返回链表结点的指针 bool Remove(int n); //删除第n个链表结点 void Rollback(); //对链表的内容进行翻转 void Print(); //输出链表的内容
源代码: #include<iostream> #include<ctime> #include<cmath> using namespace std; template<typename Type> class ListNode{ public: ListNode() :data(0), next(NULL){} ListNode(const Type item, ListNode<Type> *next = NULL) :data(item), next(next){} ~ListNode(){ next = NULL; }
public: Type GetData(); friend ostream& operator<< <Type>(ostream&, ListNode<Type>&); Type data; ListNode *next; };
template<typename Type> Type ListNode<Type>::GetData(){ return this->data; }
template<typename Type> ostream& operator<<(ostream& os, ListNode<Type>& out){ os << out.data;
|