晚上花了2个多小时写的,感觉不是很难,下次尝试下写成链表+模板的形式 O(∩_∩)O~
#include<iostream>
#include<algorithm>
using namespace std;
#define LISTVOLUME 10000
class sqlist
{
private:
int a[10001];
int lenth;
int max;
public:
sqlist()
{
memset(a,0,sizeof(a));
lenth=0;
max=LISTVOLUME;
}
void initial();
void creat();
void print();
void inset(int num,int pos);
void deletenode(int pos);
void sortlist();
int size();
bool empty();
bool full();
void findnode(int num);
};
void sqlist::initial()
{
memset(a,0,sizeof(a));
lenth=0;
max=LISTVOLUME;
}
void sqlist::creat()
{
cout<<"请顺序键入链表中的数值,用空格隔开,并以'-1'结束"<<endl;
int pos=1;
int temp;
while(cin>>temp)
{
if(temp==-1)
break;
if(lenth>=LISTVOLUME)
{
cout<<"抱歉,线性表已满,无法输入数据,请重新初始化该数据表"<<endl;
cout<<"请问需要重新初始化吗?(Y/N)"<<endl;
char temp;
cin>>temp;
if(temp=='Y'||temp=='y')
{
initial();
creat();
break;
}
else
break;
}
a[pos]=temp;
pos++;
lenth++;
}
}
void sqlist::print()
{
int i;
for(i=1;i<=lenth;i++)
{
cout<<a[i]<<' ';
}
cout<<endl;
}
void sqlist::inset(int num, int pos)
{
if(lenth>=LISTVOLUME)
{
cout<<"数据表已满,无法添加数据"<<endl;
return;
}
if(pos<1||pos>lenth+1)
{
cout<<"您输入的位置不合法,请重新输入(仅需要输入插入的位置):";
cin>>pos;
}
int i;
for(i=lenth;i>=pos;i--)
{
a[i+1]=a[i];
}
a[pos]=num;
lenth++;
}
void sqlist::deletenode(int pos)
{
if(pos<1||pos>lenth)
{
cout<<"您输入的位置不合法,请重新输入";
cin>>pos;
}
int i;
for(i=pos+1;i<=lenth;i++)
{
a[i-1]=a[i];
}
a[lenth]=0;
lenth--;
cout<<"成功删除"<<pos<<"号结点"<<endl;
}
void sqlist::sortlist()
{
int temp;
cout<<"请问您需要从小到大排列(键入1)还是从大到小排列(键入-1)"<<endl;
cin>>temp;
if(temp==1)
sort(a+1,a+1+lenth);
else if(temp==-1)
{
sort(a+1,a+1+lenth);
reverse(a+1,a+1+lenth);
}
cout<<"排序完成"<<endl;
}
int sqlist::size()
{
return lenth;
}
bool sqlist::empty()
{
if(lenth==0)
return true;
else
return false;
}
bool sqlist::full()
{
if(lenth>=max)
return true;
else
return false;
}
void sqlist::findnode (int num)
{
int i;
for(i=1;i<=lenth;i++)
{
if(a[i]==num)
{
cout<<"该元素位于"<<i<<"号位置"<<endl;
return ;
}
}
cout<<"没有搜索到改元素,请重新查找"<<endl;
}
int main ()
{
sqlist test;
int m,n;
cin>>m>>n;
test.creat();
test.print();
test.initial();
test.creat();
test.print();
test.inset(m,n);
test.sortlist ();
test.deletenode(3);
test.findnode(3);
return 0;
}