
数据结构课程设计
以下题目任选其一:1、建立一个线性表,能够实现插入、删除、查找操作,并能对数据进行排序。2、一元多项式简单计算:(1)建立多项式;(2)两个多项式相加减,并输出结果。...
以下题目任选其一:
1、建立一个线性表,能够实现插入、删除、查找操作,并能对数据进行排序。
2、一元多项式简单计算:(1)建立多项式;(2)两个多项式相加减,并输出结果。 展开
1、建立一个线性表,能够实现插入、删除、查找操作,并能对数据进行排序。
2、一元多项式简单计算:(1)建立多项式;(2)两个多项式相加减,并输出结果。 展开
2个回答
展开全部
#include <iostream>
using namespace std;
template<class T>
class CSequenceList
{
public:
CSequenceList(int size);
~CSequenceList(void);
//判断线性表是否为空
bool IsEmpty()const;
//返回线性表的长度
int Length()const;
//得到第i元素的值
bool Get(int i, T& x)const;
//找到跟x相等的下标,失败返回-1
int Find(const T x)const;
//在第i个数据之后插入x,若i=-1,那么在表头之前插入
bool Insert(int i, T x);
//删除第i个数据
bool Delete(int i);
//更新数据
bool Update(int i,T x);
//输出表
void Output(ostream& out)const;
//排序,从小到大排序
void sort();
private:
int m_number;
int maxLength;
T* mElements;
};
template<class T>
CSequenceList<T>::CSequenceList(int size)
{
maxLength=size;
mElements=new T[maxLength];
m_number=0;
}
template<class T>
CSequenceList<T>::~CSequenceList(void)
{
delete [] mElements;
}
template<class T>
bool CSequenceList<T>::IsEmpty()const
{
return m_number==0;
}
template<class T>
int CSequenceList<T>::Length()const
{
return m_number;
}
template<class T>
bool CSequenceList<T>::Get(int i, T& x)const
{
if (i <0 || i>m_number-1)
{
cout<<"Get() is error!"<<endl;
return false;
}
}
template<class T>
int CSequenceList<T>::Find(const T x)const
{
for (int i=0; i<m_number; i++)
{
if(x==mElements[i])return i;
}
return -1;
}
template<class T>
bool CSequenceList<T>::Insert(int i, T x)
{
if (i<-1 || i>m_number-1 || m_number == maxLength)
{
cout<<"Insert() is Error!";
return false;
}
for (int j=m_number-1;j>i;j--)
{
mElements[j+1]=mElements[j];
}
mElements[i+1]=x;
m_number++;
return true;
}
template<class T>
bool CSequenceList<T>::Delete(int i)
{
if (i<0 || i>m_number-1 || m_number==0)
{
cout<<"Delete() is Error!";
return false;
}
for (int j=i; j<m_number-1; j++)
{
mElements[j]=mElements[j+1];
}
m_number--;
return true;
}
template<class T>
bool CSequenceList<T>::Update(int i,T x)
{
if (i<0 || i>m_number-1)
{
cout<<"Update() is Error!";
return false;
}
mElements[i]=x;
return true;
}
template<class T>
void CSequenceList<T>::Output(ostream& out)const
{
cout<<endl;
for (int i=0; i<m_number; i++)
{
out<<mElements[i]<<" ";
}
out<<endl;
}
template<class T>
void CSequenceList<T>::sort()
{
if (m_number == 0)
{
return;
}
for (int i=0;i<m_number-1;i++)
{
for (int j=i+1;j<m_number;j++)
{
if (mElements[i] > mElements[j])
{
T temp=mElements[j];
mElements[j]=mElements[i];
mElements[i]=temp;
}
}
}
}
int main()
{
CSequenceList<int> SL(20);
for (int i=0;i<10;i++)
{
SL.Insert(i-1,i);
}
//初始化数据
cout<<"-----初始化数据-------"<<endl;
SL.Output(cout);
cout<<endl;
//在第3个后面添加一个数据99
cout<<"-----在第3个后面添加一个数据99-------"<<endl;
SL.Insert(2,99);
SL.Output(cout);
cout<<endl;
//删除第8个数据
cout<<"-----删除第8个数据-------"<<endl;
SL.Delete(7);
SL.Output(cout);
cout<<endl;
//改掉第5个数据
cout<<"-----改掉第5个数据-------"<<endl;
SL.Update(4,88);
SL.Output(cout);
cout<<endl;
cout<<"-----最后排序-------"<<endl;
SL.sort();
SL.Output(cout);
cout<<endl;
return 0;
}
就用模版写了一下第一问,希望你能够用的上,看的懂。
using namespace std;
template<class T>
class CSequenceList
{
public:
CSequenceList(int size);
~CSequenceList(void);
//判断线性表是否为空
bool IsEmpty()const;
//返回线性表的长度
int Length()const;
//得到第i元素的值
bool Get(int i, T& x)const;
//找到跟x相等的下标,失败返回-1
int Find(const T x)const;
//在第i个数据之后插入x,若i=-1,那么在表头之前插入
bool Insert(int i, T x);
//删除第i个数据
bool Delete(int i);
//更新数据
bool Update(int i,T x);
//输出表
void Output(ostream& out)const;
//排序,从小到大排序
void sort();
private:
int m_number;
int maxLength;
T* mElements;
};
template<class T>
CSequenceList<T>::CSequenceList(int size)
{
maxLength=size;
mElements=new T[maxLength];
m_number=0;
}
template<class T>
CSequenceList<T>::~CSequenceList(void)
{
delete [] mElements;
}
template<class T>
bool CSequenceList<T>::IsEmpty()const
{
return m_number==0;
}
template<class T>
int CSequenceList<T>::Length()const
{
return m_number;
}
template<class T>
bool CSequenceList<T>::Get(int i, T& x)const
{
if (i <0 || i>m_number-1)
{
cout<<"Get() is error!"<<endl;
return false;
}
}
template<class T>
int CSequenceList<T>::Find(const T x)const
{
for (int i=0; i<m_number; i++)
{
if(x==mElements[i])return i;
}
return -1;
}
template<class T>
bool CSequenceList<T>::Insert(int i, T x)
{
if (i<-1 || i>m_number-1 || m_number == maxLength)
{
cout<<"Insert() is Error!";
return false;
}
for (int j=m_number-1;j>i;j--)
{
mElements[j+1]=mElements[j];
}
mElements[i+1]=x;
m_number++;
return true;
}
template<class T>
bool CSequenceList<T>::Delete(int i)
{
if (i<0 || i>m_number-1 || m_number==0)
{
cout<<"Delete() is Error!";
return false;
}
for (int j=i; j<m_number-1; j++)
{
mElements[j]=mElements[j+1];
}
m_number--;
return true;
}
template<class T>
bool CSequenceList<T>::Update(int i,T x)
{
if (i<0 || i>m_number-1)
{
cout<<"Update() is Error!";
return false;
}
mElements[i]=x;
return true;
}
template<class T>
void CSequenceList<T>::Output(ostream& out)const
{
cout<<endl;
for (int i=0; i<m_number; i++)
{
out<<mElements[i]<<" ";
}
out<<endl;
}
template<class T>
void CSequenceList<T>::sort()
{
if (m_number == 0)
{
return;
}
for (int i=0;i<m_number-1;i++)
{
for (int j=i+1;j<m_number;j++)
{
if (mElements[i] > mElements[j])
{
T temp=mElements[j];
mElements[j]=mElements[i];
mElements[i]=temp;
}
}
}
}
int main()
{
CSequenceList<int> SL(20);
for (int i=0;i<10;i++)
{
SL.Insert(i-1,i);
}
//初始化数据
cout<<"-----初始化数据-------"<<endl;
SL.Output(cout);
cout<<endl;
//在第3个后面添加一个数据99
cout<<"-----在第3个后面添加一个数据99-------"<<endl;
SL.Insert(2,99);
SL.Output(cout);
cout<<endl;
//删除第8个数据
cout<<"-----删除第8个数据-------"<<endl;
SL.Delete(7);
SL.Output(cout);
cout<<endl;
//改掉第5个数据
cout<<"-----改掉第5个数据-------"<<endl;
SL.Update(4,88);
SL.Output(cout);
cout<<endl;
cout<<"-----最后排序-------"<<endl;
SL.sort();
SL.Output(cout);
cout<<endl;
return 0;
}
就用模版写了一下第一问,希望你能够用的上,看的懂。
本回答被提问者采纳

你对这个回答的评价是?
展开全部
我有“线性表”的源码而已(自己写的)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询