线性表的基本操作实现及其应用之顺序表的建立与操作实现
2017-09-15 21:57
375 查看
根据本学期的课程,数据结构作为重要专业课之一,其知识理论与实践的掌握都有较高要求,最终的目标是希望可以利用理论知识编写出有效可行的程序。第一节实验课,老师希望我们熟练掌握线性表的结构特点,掌握顺序表的基本操作,学会用其解决实际问题;以及巩固C++的相关程序设计方法与技术。
本小节实验课的内容为:建立n个元素的顺序表,实现输出、插入、删除、查找等功能,且不限定程序语言。
源代码如下:
#include<iostream>
#include<stdio.h>
using namespace std;
const int Max=100;
template<typename T>
class Seqlist
{
public:
Seqlist(){length=0;}
void Setlist(T a[],int n);
~Seqlist(){}
int Length();
T Get(int i);
int Locate(T x);
void Inset(int i,T x);
T Delete(int i);
void Disp();
private:
T data[Max];
int length;
};
template<typename T>
void Seqlist<T>::Setlist(T a[],int n)
{ int i;
for(i=0;i<n;i++)
data[i]=a[i];
length=n;
if(n>Max) throw"错误";
}
template<typename T>
int Seqlist<T>::Length()
{return length;}
template<typename T>
T Seqlist<T>::Get(int i)
{
if(i<1&&i>length) return false;
else return data[i-1];
}
template<typename T>
int Seqlist<T>::Locate(T x)
{
int i;
for(i=0;i<length;i++)
if(data[i]==x) return i+1;
return 0;
}
template<typename T>
void Seqlist<T>::Inset(int i,T x)
{
if(i<0||i>length) throw"错误";
for(int j=length;j>=i;j--)
{data[j]=data[j-1];}
data[i-1]=x;
length++;
}
template<typename T>
T Seqlist<T>::Delete(int i)
{
if(i<0||i>length) return false;
for(int j=i;j<length;j++)
data[j-1]=data[j];
length--;
return data[i-1];
}
template<typename T>
void Seqlist<T>::Disp()
{
int i;
cout<<"output:"<<endl;
for(i=0;i<length;i++)
cout<<data[i];
cout<<endl;
}
int main()
{
Seqlist<int> list;
int as[5]={1,2,3,4,5};
list.Setlist(as,5);
cout<<"表的长度为:"<<list.Length()<<endl;
list.Disp();
list.Get(3);
cout<<"第三个位置的元素为:"<<list.Get(3)<<endl;
cout<<"元素5的位置为:"<<list.Locate(4)<<endl;
list.Inset(1,6);
list.Disp();
list.Delete(2);
list.Disp();
return 0;
}
个人心得:由于对C++程序设计的方法和技术及数据结构相关知识还不是很掌握,所以在编写程序的时候还需要翻阅和借鉴相关书籍和资料。此外会在调试中程序出现了部分错误,在自行检查和修改当中也对这项实验和这个程序有了更多的理解,巩固了学过的相关知识点。另外,自己的编写程序的能力确实比较弱,对这类课程的知识的理解和掌握都存在较大的困难,希望可以在学习和实践当中慢慢地有所提升。
本小节实验课的内容为:建立n个元素的顺序表,实现输出、插入、删除、查找等功能,且不限定程序语言。
源代码如下:
#include<iostream>
#include<stdio.h>
using namespace std;
const int Max=100;
template<typename T>
class Seqlist
{
public:
Seqlist(){length=0;}
void Setlist(T a[],int n);
~Seqlist(){}
int Length();
T Get(int i);
int Locate(T x);
void Inset(int i,T x);
T Delete(int i);
void Disp();
private:
T data[Max];
int length;
};
template<typename T>
void Seqlist<T>::Setlist(T a[],int n)
{ int i;
for(i=0;i<n;i++)
data[i]=a[i];
length=n;
if(n>Max) throw"错误";
}
template<typename T>
int Seqlist<T>::Length()
{return length;}
template<typename T>
T Seqlist<T>::Get(int i)
{
if(i<1&&i>length) return false;
else return data[i-1];
}
template<typename T>
int Seqlist<T>::Locate(T x)
{
int i;
for(i=0;i<length;i++)
if(data[i]==x) return i+1;
return 0;
}
template<typename T>
void Seqlist<T>::Inset(int i,T x)
{
if(i<0||i>length) throw"错误";
for(int j=length;j>=i;j--)
{data[j]=data[j-1];}
data[i-1]=x;
length++;
}
template<typename T>
T Seqlist<T>::Delete(int i)
{
if(i<0||i>length) return false;
for(int j=i;j<length;j++)
data[j-1]=data[j];
length--;
return data[i-1];
}
template<typename T>
void Seqlist<T>::Disp()
{
int i;
cout<<"output:"<<endl;
for(i=0;i<length;i++)
cout<<data[i];
cout<<endl;
}
int main()
{
Seqlist<int> list;
int as[5]={1,2,3,4,5};
list.Setlist(as,5);
cout<<"表的长度为:"<<list.Length()<<endl;
list.Disp();
list.Get(3);
cout<<"第三个位置的元素为:"<<list.Get(3)<<endl;
cout<<"元素5的位置为:"<<list.Locate(4)<<endl;
list.Inset(1,6);
list.Disp();
list.Delete(2);
list.Disp();
return 0;
}
个人心得:由于对C++程序设计的方法和技术及数据结构相关知识还不是很掌握,所以在编写程序的时候还需要翻阅和借鉴相关书籍和资料。此外会在调试中程序出现了部分错误,在自行检查和修改当中也对这项实验和这个程序有了更多的理解,巩固了学过的相关知识点。另外,自己的编写程序的能力确实比较弱,对这类课程的知识的理解和掌握都存在较大的困难,希望可以在学习和实践当中慢慢地有所提升。
相关文章推荐
- 实验一 线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一 线性表的基本操作实现及其应用
- 数据结构实验一线性表的基本操作实现及其应用
- 实验三:栈和队列的基本操作实现及其应用——顺序栈
- 实验一 线性表的基本操作实现及其应用
- 实验一 线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 线性表的基本操作实现及其应用
- 实验一:线性表的基本操作实现及其应用
- 顺序表的基本操作实现及其应用(实验1)
- 实验一线性表的基本操作实现及其应用
- 数据结构笔记(一)线性表的顺序表示和基本操作及其顺序表实现的集合运算(A-B)U(B-A)实例
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用