c++静态链表
#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;
intsize;
};
Table:: Table()
{
size=0;
dot.cur=0;
dot.date=0;
for(int i=0;i<max-1;i++)
{
dot.cur=i+1;
dot. 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.cur]. date=e;
d=dot.cur;
dot. cur=dot.cur].cur;
for(int j=1;j<=i-1;j++)
{
k= dot.cur;
}
dot. cur=dot. cur;
dot. 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. cur;
}
e=dot.cur]. date;
d=dot.cur;
dot.cur=dot.cur;
dot. cur=dot.cur].cur;
dot.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. cur;
std::cout<<dot. 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;
}
页:
[1]