|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<iostream>
#define max 100
struct DOT
{
char cur;
int date;
};
class Table
{
public:
Table();
int add(int i,int &e);
int dete(int i, int &e);
int play();
private:
DOT dot[max];
int size;
};
Table:: Table()
{
size=0;
dot[max-1].cur=0;
dot[max-1].date=0;
for(int i=0;i<max-1;i++)
{
dot[i].cur=i+1;
dot[i]. date=0;
}
}
int Table:: add(int i,int &e)
{
int k=max-1,d;
if(i<0||i>size+1||size==max-2)
{
std::cout<<"出现错误(可能你插的位置有误或表已满)\n";
return -1;
}
dot[dot[0].cur]. date=e;
d=dot[0].cur;
dot[0]. cur=dot[dot[0].cur].cur;
for(int j=1;j<=i-1;j++)
{
k= dot[k].cur;
}
dot[d]. cur=dot[k]. cur;
dot[k]. cur=d;
size++;
return 0;
}
int Table::dete(int i, int &e)
{
int k=max-1,d;
if(i<0||i>size)
{
std::cout<<"出现错误(可能你删除的位置有误)\n";
return -1;
}
for(int j=1;j<=i-1;j++)
{
k=dot[k]. cur;
}
e=dot[dot[k].cur]. date;
d=dot[0].cur;
dot[0].cur=dot[k].cur;
dot[k]. cur=dot[dot[k].cur].cur;
dot[dot[0].cur].cur=d; size--;
return 0;
}
int Table::play()
{
int k=max-1;
if(size==0){ std::cout<<"当前列表为空";return -1;}
std::cout<<"当前表中一共有"<<size<<"数据"<<std::endl;
std::cout<<"分别………如下:\n";
for(int i=0;i<size;i++)
{
k=dot[k]. cur;
std::cout<<dot[k]. date<<" ";
}
std::cout<<std::endl;
return 0;
}
int option(Table &table)
{
char c;int i;int e;
while(1)
{
std::cout<<"请输入指令(1为增加,2为删除,3为显示)\n";
std:: cin>>c;
std::cin. ignore(1);
switch(c)
{
case '1': std::cout<<"请输入数据:\n";
std::cin>>e;
std::cin. ignore(1);
std::cout<<"请输入位置:\n";
std::cin>>i;
std::cin. ignore(1);
table.add(i,e);
break;
case '2': std::cout<<"请输入删除位置:\n";
std::cin>>i;
std::cin. ignore(1);
table. dete(i,e);
break;
case '3': table.play();
break;
default: std::cout<<"你输入指令有误\n请重新输入\n"; break;
}
}
return 0;
}
int main()
{
Table table;
int e=12;
option(table);
return 0;
}
|
|