您的位置:首页 > 其它

线性表的基本操作实现及其应用之顺序表的建立与操作实现

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++程序设计的方法和技术及数据结构相关知识还不是很掌握,所以在编写程序的时候还需要翻阅和借鉴相关书籍和资料。此外会在调试中程序出现了部分错误,在自行检查和修改当中也对这项实验和这个程序有了更多的理解,巩固了学过的相关知识点。另外,自己的编写程序的能力确实比较弱,对这类课程的知识的理解和掌握都存在较大的困难,希望可以在学习和实践当中慢慢地有所提升。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: