南郵資料結構實驗1.1 順序表的操作
內容和提示:
1.在順序表類SeqList中增加成員函式void Reverse(),實現順序表的逆置。
2.在順序表類SeqList中增加成員函式bool DeleteX(const T &x),刪除表中所有元素值等於x的元素。若表中存在這樣的元素,則刪除之,且函式返回true;否則函式返回false。
3.編寫main函式,呼叫上述新增函式。
4.提示:建立LinearList.h,SeqList.h檔案包含程式2.1和程式2.2的程式碼。在其中新增上述兩個函式。
#include <iostream>
using namespace std;
const int SIZE=20 ;
template <class T>
class LinearList
{
protected:
int n; //線性表的長度
public:
virtual bool IsEmpty() const=0;
virtual int Length() const=0;
virtual bool Find(int i,T& x) const=0;
virtual int Search(T x) const=0;
virtual bool Insert(int i,T)=0;
virtual bool Delete(int i)=0;
virtual bool Update(int i,T x)=0;
virtual void Output(ostream &out) const=0;
};
//#include"linearlist.h"
template <class T>
class SeqList:public LinearList<T>
{
public:
SeqList(int mSize);
~SeqList() {delete [] elements;}
bool IsEmpty() const;
int Length() const;
bool Find(int i,T &x) const;
int Search(T x) const;
bool Insert(int i,T x);
bool Delete(int i);
bool Update(int i,T x);
void Output(ostream& out)const;
void Reserve()const; //順序表逆置
bool DeleteX(const T &x); //刪除相同的元素
private:
int maxLength;
T *elements;
};
template <class T>
SeqList<T>::SeqList(int mSize)
{
maxLength=mSize;
elements=new T[maxLength];
n=0;
}
template <class T>
bool SeqList<T>::IsEmpty() const
{
return n==0;
}
template <class T>
int SeqList<T>::Length() const
{
return n;
}
template<class T>
bool SeqList<T>::Find(int i,T &x) const
{
if(i<0 ||i>n-1)
{
cout<<"Out of Bounds"<<endl;return false;
}
x=elements[i];
return true;
}
template <class T>
int SeqList<T>::Search(T x) const
{
for(int j=0;j<n;j++)
if(elements[j]==x) return j;
return -1;
}
template <class T>
bool SeqList<T>::Insert(int i,T x)
{
if(i<-1 ||i>n-1)
{
cout<<"Out of Bounds"<<endl;return false;
}
if(i==maxLength)
{
cout<<"OverFlow"<<endl;return false;
}
for(int j=n-1;j>i;j--)
elements[j+1]=elements[j];
elements[i+1]=x;
n++;return true;
}
template <class T>
bool SeqList<T>::Delete(int i)
{
if(!n)
{
cout<<"OverFlow"<<endl;return false;
}
if(i<0 ||i>n-1)
{
cout<<"Out of Bounds"<<endl;return false;
}
for(int j=i+1;j<n;j++)
elements[j-1]=elements[j];
n--;return true;
}
template <class T>
bool SeqList<T>::Update(int i,T x)
{
if(i<0||i>n-1)
{
cout<<"Out of Bounds"<<endl;return false;
}
elements[i]=x;
return true;
}
template <class T>
void SeqList<T>::Output(ostream &out)const
{
for(int i=0;i<n;i++) out<<elements[i]<<" ";
out<<endl;
}
template<class T> //順序表逆置
void SeqList<T>::Reserve() const
{
T x;
for(int i=0;i<n/2;i++)
{
x=elements[i];
elements[i]=elements[n-1-i];
elements[n-1-i]=x;
}
}
template<class T> //刪除相同的元素
bool SeqList<T>::DeleteX(const T &x)
{
int count=0;
for(int i=0;i<n;i++)
{
if (Search(x) < 0) return false;
else
{
while (Search(x)>=0)
Delete(Search(x));
}
return true;
}
}
//#include"seqlist.h"
//#include"singlelist.h"
void main()
{
SeqList <int> LA(SIZE);
int x,n,a;
cout<<"Please input the length:"<<endl;
cin>>n;
cout<<"Please input the SeqList:"<<endl;
for(int i=0;i<n;i++)
{
cin>>x;
LA.Insert(i-1,x);
}
LA.Output(cout);
cout<<"Please input x to be deleted:"<<endl;
cin>>a;
LA.DeleteX(a);
cout<<"After delete:"<<endl;
LA.Output(cout);
LA.Reserve();
cout<<"After reserved:"<<endl;
LA.Output(cout);
}
相關文章
- 南郵資料結構實驗1.1:順序表的相關操作資料結構
- 資料結構實驗一:順序表的建立與操作實現、順序表實現約瑟夫環問題資料結構
- 資料結構c語言實現順序表基本操作資料結構C語言
- 【資料結構】實現順序表(c++)資料結構C++
- 資料結構 - 線性表 - 順序表資料結構
- 資料結構:線性表的順序實現2.2資料結構
- 【資料結構】實現順序表(c語言)資料結構C語言
- 考研資料結構-線性表-順序表資料結構
- 資料結構實驗之連結串列一:順序建立連結串列資料結構
- 基礎資料結構(一)---(最全)定長順序表的實現資料結構
- 具體實現程式碼@資料結構探險——順序表資料結構
- 【資料結構】順序棧的實現(c++)資料結構C++
- 實驗二:順序表的基本操作實現及其應用
- 資料結構與演算法 | 線性表 —— 順序表資料結構演算法
- 【資料結構】順序佇列的實現(c++)資料結構佇列C++
- 資料結構_順序表_順序表的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- python演算法與資料結構-順序表(37)Python演算法資料結構
- 資料結構:順序結構和鏈式結構的資料型別定義資料結構資料型別
- 資料結構 順序棧(c語言)資料結構C語言
- 順序結構
- 資料結構練習題(順序表和單連結串列)C++資料結構C++
- c語言資料結構,你可能還不知道的順序表C語言資料結構
- 11 線性表的順序儲存結構
- 順序表有序插入資料
- @資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》資料結構C++
- 資料結構實驗三:線性表綜合實驗資料結構
- 線性表之順序儲存結構
- 順序表的實現
- 南郵離散實驗三(JAVA)Java
- 自學 資料結構四月二十二日_線性結構之順序表資料結構
- 【資料結構】堆疊(順序棧、鏈棧)的JAVA程式碼實現資料結構Java
- python實現基本資料結構第二篇(順序棧、鏈棧,順序隊、鏈隊)Python資料結構
- 資料結構實驗5、鏈佇列的基本操作資料結構佇列
- C#資料結構-二叉樹-順序儲存結構C#資料結構二叉樹
- 自學 資料結構四月二十三日_線性結構之順序表(2)資料結構
- 實戰資料結構(7)_線性表的綜合操作資料結構
- 順序結構與選擇結構
- C++順序結構(3)、資料型別_____教學C++資料型別