实验二 线性表实验
来源:互联网 发布:java电话本管理系统 编辑:程序博客网 时间:2024/06/06 04:00
线性表实验
一..实验目的
巩固线性表的数据结构,学会线性表的应用。
1.回顾线性表的逻辑结构,线性表的物理存储结构和常见操作。
2.学习运用线性表的知识来解决实际问题。
3.进一步巩固程序调试方法。
4.进一步巩固模板程序设计。
二.实验时间
准备时间为第2周到第4周,具体集中实验时间为第4周第2次课。2个学时。
三..实验内容
1.建立一个N个学生成绩的顺序表,对表进行插入、删除、查找等操作。分别输出结果。
要求如下:
1)用顺序表来实现:通过创建多文件
a.创建头文件“student.h”
#ifndef student_H
#define student_H
const int MaxSize=10;
class Student
{
public:
Student(){length=0;}
Student(int a[],int n);
~Student(){}
void Insert(int i,int x);
int deletes(int i);
int locate(int x);
void printlist();
private:
int data[MaxSize];
int length;
};
#endif
b.创建源程序文件“student.cpp”
#include<iostream>
using namespace std;
#include "student.h"
Student::Student(int a[],int n)
{
if(n>MaxSize)throw"参数非法";
for(int i=0;i<n;i++)
data[i]=a[i];
length=n;
}
void Student::Insert(int i,int x)
{
if(length>=MaxSize)throw"上溢";
if(i<1||i>length++)throw"位置非法";
for(int j=length;j>=i;j--)
data[j]=data[j-1];
data[i-1]=x;
length++;
}
int Student::deletes(int i)
{
if(length==0)throw"下溢";
if(i<1||i>length)throw"位置非法";
int x=data[i-1];
for(int j=i;j<length;j++)
data[j-1]=data[j];
length--;
return x;
}
int Student::locate(int x)
{
for(int i=0;i<length;i++)
if(data[i]==x)return i+1;
return 0;
}
void Student::printlist()
{
for(int i=0;i<length;i++)
cout<<data[i]<<" ";
cout<<endl;
}
c.建#include<iostream>
using namespace std;
#include "student.cpp"
void main()
{
int r[5]={1,2,3,4,5};
Student l(r,5);
cout<<"执行插入操作前数据为"<<endl;
l.printlist();
try
{
l.Insert(2,3);
}
catch(char *s)
{
cout<<s<<endl;
}
cout<<"执行插入操作后数据为:"<<endl;
l.printlist();
cout<<"值为3的元素位置为:";
cout<<l.locate(3)<<endl;
cout<<"执行删除的第一个元素操作,删除前数据为"<<endl;
l.printlist();
try
{
l.deletes(1);
}
catch(char *s)
{
cout<<s<<endl;
}
cout<<"删除后数据为:"<<endl;
l.printlist();
}立一个主函数“student-main.cpp”
d.实验结果:
出现这个问题不会解决T_T
2)用单链表来实现:创建多文件
#ifndef Student_H
#define Student_H
template<class Ty>
struct node
{
Ty data;
node<Ty>*next;
};
template <class Ty>
class Sgrade
{
public:
Sgrade();
Sgrade(Ty a[],int n);
~Sgrade();
int length();
Ty get(int i);
int locate(Ty x);
void insert(int i,Ty x);
Ty Delete(int i);
void printlist();
private:
node<Ty>*first;
};
#endif
b.创建源程序文件“Student.cpp”
#include <iostream>
using namespace std;
#include"Student.h"
template <class Ty>
Sgrade<Ty>::Sgrade()
{
first=new node<Ty>;
first->next=NULL;
}
template <class Ty>
Sgrade<Ty>::Sgrade(Ty a[],int n)
{
node<Ty>*r,*s;
first=new node<Ty>;
r=first;
for(int i=0;i<n;i++)
{
s=new node<Ty>;
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
template <class Ty>
Sgrade<Ty>::~Sgrade()
{
node<Ty>*q;
while(first!=NULL)
{
q=first;
first=first->next;
delete q;
}
}
template <class Ty>
void Sgrade<Ty>::insert(int i,Ty x)
{
node<Ty>*p=first,*s;
int count=0;
while (p!=NULL && count<i-1)
{
p=p->next;
count++;
}
if(p==NULL)throw"位置";
else
{
s=new node<Ty>;
s->data=x;
s->next=p->next;
p->next=s;
}
}
template <class Ty>
Ty Sgrade<Ty>::Delete(int i)
{
node<Ty>*p,*q;
Ty x;
int count=0;
p=first;
while(p!=NULL && count<i-1)
{
p=p->next;
count++;
}
if(p==NULL || p->next==NULL)throw"位置";
else
{
q=p->next;
x=q->data;
delete q;
return x;
}
}
template <class Ty>
int Sgrade<Ty>::locate(Ty x)
{
node<Ty>*p=first->next;
int count=1;
while(p!=NULL)
{
if(p->data==x)return count;
p=p->next;
count++;
}
return 0;
}
template <class Ty>
void Sgrade<Ty>::printlist()
{
node<Ty>*p=first->next;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
c.创建头文件“Student1.cpp”
#include <iostream>
using namespace std;
#include"Student.cpp"
void main()
{
int r[5]={11,12,13,14,15};
Sgrade<int>R(r,5);
cout<<"执行插入操作前的数据为:"<<endl;
R.printlist();
R.insert(2,16);
cout<<"执行插入操作后的数据为:"<<endl;
R.printlist();
cout<<"查找值为13的元素位置:"<<endl;
cout<<R.locate(13)<<endl;
cout<<"执行删除操作前的数据为:"<<endl;
R.printlist();
R.Delete(3);
cout<<"执行删除操作后的数据为:"<<endl;
R.printlist();
}
实验总结:
通过这次实验,进一步的了解了线性表的数据结构,学会线性表的应用,对代码又进一步的熟悉了。
但是仍存在问题不会解决。
- 实验二:线性表实验
- 实验二:线性表实验
- 实验二:线性表实验
- 实验二线性表实验
- 实验二 线性表实验
- 实验二、 线性表实验
- 《数据结构》实验二:线性表的实验
- 《数据结构》实验二:线性表实验
- 《数据结构》实验二: 线性表实验
- 《数据结构》实验二 线性表的实验
- 实验二:线性表的实验
- 《数据结构》实验二:线性表实验
- 《数据结构》实验二:线性表的实验
- 实验二:线性表实验(1)
- 数据结构实验二 :线性表的实验
- 《数据结构》实验二 线性表的实验
- 《数据结构》实验二:线性表实验(1)
- 数据结构实验二 线性表实验
- STL中vector、list、deque和map的区别
- 噬锤季伤北构览靠舶乙叭量构适严
- 厍秸智敛蛔章珊探仪珊官冈辛陨滋
- vector,list,deque,set,map of STL
- AM335x(TQ335x)学习笔记——使用dtb方式启动内核
- 实验二 线性表实验
- jQuery $.post $.ajax用法
- 基本数据类型
- B/S结构浏览器的全屏解决方案
- LeetCode——Same Tree
- 创建第一个cocos2d-x
- 百度地图兴趣点抓取工具
- mac升级至10.10 导致idea引用jdk失败
- NSDateFormatter格式大全