山东中医药大学《数据结构》实验1
来源:互联网 发布:淘宝优惠卷是真的假的 编辑:程序博客网 时间:2024/06/08 16:49
实验一 单链表及其应用
一.实验目的
(1)掌握线性表的链接存储结构;
(2)验证单链表及其基本操作的实现;
(3)进一步理解算法与程序的关系,能够将单链表算法转换为对应的程序。
二.实验内容
(1)用头插法(或尾插法)建立带头结点的单链表;
(2)用已建立的单链表实现插入、删除、查找等基本操作。
三.实验要求
1.利用链表存储结构实现线性表的存储,并设计线性表的基本操作算法;
2.在实验过程中,对不同算法要考虑到时间复杂度和空间复杂度。
四.实验环境
PC微机
DOS操作系统或Windows操作系统
Turbo C程序集成环境或Visual C++程序集成环境
五.实验步骤及结果
1.LinkList.h代码:
#ifndefLinkList_H
#defineLinkList_H
template<class DataType>
struct Node
{
DataType data;
Node<DataType>*next;
};
template<class DataType>
class LinkList
{
public:
LinkList();
LinkList(DataTypea[],int n);
~LinkList();
intLocate(DataType x);
voidInsert(int i,DataType x);
DataTypeDelete(int i);
voidPrintList( );
private:
Node<DataType>*first;
};
#endif
2.Linklist.cpp代码:
#include<iostream>
usingnamespace std;
#include"LinkList.h"
template<class DataType>
LinkList<DataType>::LinkList( )
{
first=new Node<DataType>;
first->next=NULL;
}
template<class DataType>
LinkList<DataType>::LinkList(DataTypea[],int n)
{
Node <DataType>*r,*s;
first=new Node<DataType>;
r=first;
for (int i=0;i<n;i++)
{
s=newNode<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;
deleteq;
}
}
template<class DataType>
voidLinkList<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=newNode<DataType>; s->data=x;
s->next=p->next;p->next=s;
}
}
template<class DataType>
DataTypeLinkList<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;
deleteq;
returnx;
}
}
template<class DataType>
intLinkList<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>
voidLinkList<DataType>::PrintList( )
{
Node<DataType>*p=first->next;
while (p!=NULL)
{
cout<<p->data<<"";
p=p->next;
}
cout<<endl;
}
3.Linklist_main代码:
#include<iostream>
usingnamespace std;
#include"LinkList.cpp"
void main( )
{
int r[5]={1,2,3,4,5};
LinkList<int>L(r,5);
cout<<"20134515计算机科学与技术2班沈鹏\n";
cout<<"执行插入操作前数据为:"<<endl;
L.PrintList( );
try
{
L.Insert(2,3);
}
catch (char *s)
{
cout<<s<<endl;
}
cout<<"执行插入操作后数据为:"<<endl;
L.PrintList( );
cout<<"值为5的元素位置为:";
cout<<L.Locate(5)<<endl;
cout<<"执行删除操作前数据为:"<<endl;
L.PrintList( );
try
{
L.Delete(1);
}
catch (char *s)
{
cout<<s<<endl;
}
cout<<"执行删除操作后数据为:"<<endl;
L.PrintList( );
六.实验小结
通过这节课的学习,对数据结构这门课的认识深了一些,学习兴趣弄了一些,在今后的日子里一定会好好学习~
- 山东中医药大学《数据结构》实验1
- 山东中医药大学数据结构第二章线性表
- 山东中医药大学数据结构第三章栈与队列
- 山东中医药大学2013级沈鹏计算机科学与技术《数据结构》课堂笔记
- 山东中医药大学计算机科学与技术二班王超数据结构绪论
- 浙江中医药大学-《数据结构》-栈和队列算法设计
- 浙江中医药大学-《数据结构》-串、数组算法设计
- 浙江中医药大学-数据结构与算法期末考试应用题、程序设计题
- 山东中医药大学计算机科学与技术2班王鑫童数据结构绪论笔记
- 山东中医药大学计算机科学与技术2班王鑫童数据结构第2章笔记总结
- 1591 浙江中医药大学
- 1531 浙江中医药大学
- 浙江中医药大学-《数据结构》(C语言版)-第一章-第二章概念与代码
- 浙江中医药大学-《数据结构》(C语言版)-栈、队列、串、数组
- 浙江中医药大学-数据结构与算法期末考试应用题图论补充
- 中医药大学的专业情书
- 1066 浙江中医药大学ACM
- 1049 '最爱' 浙江中医药大学
- [面试] - Java方向问题1
- Servlet学习笔记(三):Servlet基础
- 数据结构学习(一)
- [面试] - java面试题2
- 解决TCP网络传输“粘包”问题
- 山东中医药大学《数据结构》实验1
- C. Modified GCD(二分加搜索约数)
- 二维数组的输出
- ubuntu下批量修改后缀名及批量重命名
- 杭电2008
- [面试] - java面试题3
- Oralce新建数据库、新建远程登录用户全过程
- 0923
- MFC、WTL 、ATL、STL联系与区别