#include "iostream.h"
#define MaxSize 100
typedef int DataType;
class SeqList
{
DataType list[MaxSize];
int length;
public:
SeqList(){length=0;}
void SLCreat(int n);
void SLInsert(int i,DataType x);
void SLDelete(int i);
int GetLength(){return length;}
int SLFind(DataType x);
DataType SLGet(int i);
int SLIsEmpty();
void SLPrint();
};
//創(chuàng)建順序表
void SeqList::SLCreat(int n)
{
DataType x;
cout << "請輸入數(shù)據(jù)元素:";
for (int i=0;i<n;i++){
cin >>x;
list[i]=x;
length++;
}
}
//在順序表L中的i位置插入數(shù)據(jù)元素x
void SeqList::SLInsert(int i,DataType x)
{
int k;
if (length>=MaxSize)
cout<< "表已滿,無法插入!"<<endl;
else if (i<0||i>length)
cout <<"參數(shù)i不合理!" <<endl;
else
{
for (k=length;k>i;k--)
{list[k]=list[k-1];}
list[i]=x;
length++;
}
}
//刪除第i個位置的數(shù)據(jù)元素
void SeqList::SLDelete(int i)
{
int k;
if (!SLIsEmpty())
cout << "表已空,無法刪除!"<<endl;
else if (i<0||i>length)
cout << "參數(shù)i不合理!"<<endl;
else
{
for (k=i-1;k<length;k++)
list[k]=list[k+1];
length--;
}
}
//查找數(shù)據(jù)元素x在表中的位置
int SeqList::SLFind(DataType x)
{
int i=0;
while (i<length&&list[i]!=x) i++;
if (i>=length) return -1;
else return i+1;
}
//獲取第i個位置的元素的數(shù)值
DataType SeqList::SLGet(int i)
{
if (i<0||i>length)
{
cout<<"參數(shù)i不合理!"<<endl;
return 0;
}
else
return list[i-1];
}
//判斷順序表是否為空
int SeqList::SLIsEmpty()
{
if (length<=0) return 0;
else return 1;
}
//獎順序表顯示在屏幕上
void SeqList::SLPrint()
{
if (!SLIsEmpty())
cout<<"空表!"<<endl;
else
for (int i=0;i<length;i++)
cout<<list[i]<<" ";
cout <<endl;
}
void main()
{
SeqList myList;
int i,n,flag=1,select;
DataType x;
cout<<"1、建立順序表\n";
cout<<"2、求第i個位置上的數(shù)值\n";
cout<<"3、求x數(shù)值的位置:\n";
cout<<"4、在第i個位置插入數(shù)值元素x\n";
cout<<"5、刪除第i個位置上的數(shù)值\n";
cout<<"6、退出\n";
cout<<endl;
while (flag)
{
cout<<"請選擇操作: ";
cin>>select;
switch(select)
{
case 1:
cout<<"請輸入順序表的長度: ";
cin>>n;
myList.SLCreat(n);
cout<<"你所輸入的順序表為: ";
myList.SLPrint();
break;
case 2:
cout<<"請輸入i的位置: ";
cin>>i;
cout<<"第"<<i<<"個位置上的數(shù)值為: "<<myList.SLGet(i)<<endl;
break;
case 3:
cout<<"請輸入x的值: ";
cin>>x;
i=myList.SLFind(x);
if(i!=-1) cout<<"x的位置為: "<<i<<endl;
else cout<<"沒有找到!";
break;
case 4:
cout<<"請輸入要插入的元素的位置i和數(shù)值x: ";
cin>>i>>x;
myList.SLInsert(i,x);
cout<<"插入后的順序表為: ";
myList.SLPrint();
break;
case 5:
cout<<"請輸入要刪除的元素的位置: ";
cin>>i;
myList.SLDelete(i);
cout<<"刪除后的順序表為: ";
myList.SLPrint();
break;
case 6:
flag=0;
break;
}
}
}
運行結(jié)果:
|
|
|