实验一是做一个猜单词的游戏,bug太多,所以就不贴出来了。。。
实验二的题目是:
1.完成图形类及其派生类的定义
(1) 设计一个计算图形面积的类库。它的顶层是一个抽象类,并且提供三个纯虚函数:显示数据成员、返回面积和返回体积。
class Shape
{public:
virtual void showData()=0;
virtualdouble reArea()=0;
virtualdouble reVolume()=0;
};
第二层有Shape类派生TwoDimShape(二维图形)和ThreeShape(三维图形)类。他们增加了有关的数据成员,但没有成员函数的实现。
第三层派生具体的图形类。TwoDimShape类派生Circle(圆)、Elipse(椭圆)、Rectangle(矩形)和Triangle(三角形)等类。ThreeShape类派生Ball(球体)、Cylider(圆柱体)和RectangularParallelepiped(长方体)等类。
(2) 设计一个测试程序,全面测试你的设计,要求使用基类指针引用派生类对象的三个函数。
2.用异质链表组织上述各类图形对象。
(1) 实现单链表:将结点数据域定义为int,链表具有插入结点、删除结点、反转、遍历等功能,并测试其正确性。
(2) 将结点数据域定义修改为Shape *,用链表中的每个结点表示一个具体的图形对象,创建图形对象链表,并测试其正确性。
(3) 将所建单链表中的内容写到一个文本文件中,反转单链表并再次将其内容追加到同一文本文件中,查阅其正确性。
代码有点累赘,用了许多if,有需要的话可以改成switch。另外可以实现保存链表到txt文本,从txt文本导入链表。虽然质量不高,bug也很多,大家就多多担待吧
另外代码在cfree上编译通过的,推荐大家用cfree或mingw运行。
#include<iostream>
#include<windows.h>
#include<fstream>
using namespace std;
class Shape
{
public:
virtual void showData()=0;
virtual double reArea()=0;
virtual double reVolume()=0;
virtual void saveData()=0;
virtual int reflag()=0;
Shape *next;
};
class TwoDimShape:public Shape
{
public:
double area;
virtual void showData(){}
virtual void saveData(){}
virtual double reArea(){return 0;}
virtual int reflag(){return 0;}
};
class ThreeShape:public Shape
{
public:
double area;
double volume;
virtual void showData(){}
virtual void saveData(){}
virtual double reArea(){return 0;}
virtual double reVolume(){return 0;}
virtual int reflag(){return 0;}
};
//二维派生
class Circle:public TwoDimShape//圆类
{
private:
double data_1;
double data_2;
double data_3;
int flag;
//area=3.14*radius*radius;
public:
double reVolume(){return 0;}
Circle(double r)
{
data_1=r;
}
void showData()
{
cout<<"圆的半径是: "<<data_1<<endl;
}
double reArea()
{
area=3.14*data_1*data_1;
cout<<"圆的面积是:"<<area<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"1"<<endl;
save<<data_1<<endl;
save<<area<<endl;
}
int reflag()
{
flag=1;
return flag;
}
};
class Elipse:public TwoDimShape//椭圆类
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
double reVolume(){return 0;}
Elipse(double a,double m)
{
data_1=a;
data_2=m;
}
void showData()
{
cout<<"椭圆的长轴是: "<<data_1<<endl;
cout<<"椭圆的短轴是: "<<data_2<<endl;
}
double reArea()
{
area=(3.14*data_1*data_2)/4;
cout<<"椭圆的面积是:"<<area<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"2"<<endl;
save<<data_1<<endl;
save<<data_2<<endl;
save<<area<<endl;
}
int reflag()
{
flag=2;
return flag;
}
};
class Rectangles:public TwoDimShape//长方形类
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
double reVolume(){return 0;}
Rectangles(double l,double w)
{
data_1=l;
data_2=w;
}
void showData()
{
cout<<"长方形的长是:"<<data_1<<endl;
cout<<"长方形的宽是:"<<data_2<<endl;
}
double reArea()
{
area=data_1*data_2;
cout<<"长方形的面积是:"<<area<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"3"<<endl;
save<<data_1<<endl;
save<<data_2<<endl;
save<<area<<endl;
}
int reflag()
{
flag=3;
return flag;
}
};
class Triangle:public TwoDimShape//三角形类
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
double reVolume(){return 0;}
Triangle(double b,double h)
{
data_1=b;
data_2=h;
}
void showData()
{
cout<<"三角形的底是:"<< data_1<<endl;
cout<<"三角形的高是:"<< data_2<<endl;
}
double reArea()
{
area=(data_1*data_2)/2 ;
cout<<"三角形的面积是:"<<area<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"4"<<endl;
save<<data_1<<endl;
save<<data_2<<endl;
save<<area<<endl;
}
int reflag()
{
flag=4;
return flag;
}
};
//三维派生
class Ball:public ThreeShape//球类
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
Ball(double b)
{
data_1=b;
}
void showData()
{
cout<<"球的半径是:"<< data_1<<endl;
}
double reArea()
{
area=4*data_1*data_1;
cout<<"球的面积是:"<< area<<endl;
}
double reVolume()
{
volume=(4/3)*data_1*data_1*data_1;
cout<<"球的体积是:"<< volume<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"5"<<endl;
save<< data_1<<endl;
save<<area<<endl;
save<<area<<endl;
}
int reflag()
{
flag=5;
return flag;
}
};
class Cylider:public ThreeShape//圆柱类
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
Cylider(double r,double h)
{
data_1=r;
data_2=h;
}
void showData()
{
cout<<"圆柱的底面半径是:"<< data_1<<endl;
cout<<"圆柱的高是:"<< data_2<<endl;
}
double reArea()
{
area=(2*3.14*data_1*data_1)+(2*3.14*data_1*data_2);
cout<<"圆柱的面积是:"<< area <<endl;
}
double reVolume()
{
volume=3.14*data_1*data_1*data_2;
cout<<"圆柱的体积是:"<< volume<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"6"<<endl;
save<<data_1<<endl;
save<<data_2<<endl;
save<<area<<endl;
save<<area<<endl;
}
int reflag()
{
flag=6;
return flag;
}
};
class RectangularParallelepiped:public ThreeShape//长方体类
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
RectangularParallelepiped(double l,double w,double h)
{
data_1=l;
data_2=w;
data_3=h;
}
void showData()
{
cout<<"长方体的长是:"<<data_1<<endl;
cout<<"长方体的宽是:"<<data_2<<endl;
cout<<"长方体的高是:"<<data_3<<endl;
}
double reArea()
{
area=2*(data_1*data_2+data_1*data_3+data_2*data_3) ;
cout<<"长方体的面积是:"<<area<<endl;
}
double reVolume()
{
volume=data_1*data_2*data_3;
cout<<"长方体的体积是:"<<volume<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"7"<<endl;
save<<data_1<<endl;
save<<data_2<<endl;
save<<data_3<<endl;
save<<area<<endl;
save<<area<<endl;
}
int reflag()
{
flag=7;
return flag;
}
};
void creatlist(Shape * & head,int n)//创建链表
{
int creat_judge=0;
int creat_num=0;//创建节点数量
Shape *move=NULL;
Shape *p=NULL;//用于创建每个链表
for(creat_num=1;creat_num<=n;creat_num++)
{
cout<<"1 建立圆形的链表"<<endl<<"2 建立椭圆形的链表"<<endl<<"3 建立长方形的链表"<<endl<<"4 建立三角形的链表"<<endl<<"5 建立球体的链表"<<endl<<"6 建立圆柱体的链表"<<endl<<"7 建立长方体的链表"<<endl;
cout<<"当每个图形输入数据为0时退出!"<<endl;
cout<<endl<<"请输入你的选择:";
cin>>creat_judge;
if(creat_judge==0)
{
cout<<"输入错误,请从新输入:";
cin>> creat_judge;
}
if(creat_judge==1)
{
double data;
cout<<"请输入半径:";
cin>>data;
if(data==0)
{
return;
}
p=new Circle(data);
p->reArea();
}
else if(creat_judge==2)
{
double data1;
double data2;
cout<<"请输入长轴:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入短轴:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Elipse(data1,data2);
p->reArea();
}
else if(creat_judge==3)
{
double data1;
double data2;
cout<<"请输入长:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入宽:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Rectangles(data1,data2);
p->reArea();
}
else if(creat_judge==4)
{
double data1;
double data2;
cout<<"请输入底边:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Triangle(data1,data2);
p->reArea();
}
else if(creat_judge==5)
{
double data1;
cout<<"请输入半径:";
cin>>data1;
if(data1==0)
{
return;
}
p=new Ball(data1);
p->reArea();
p->reVolume();
}
else if(creat_judge==6)
{
double data1;
double data2;
cout<<"请输入底面半径:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Cylider(data1,data2);
p->reArea();
p->reVolume();
}
else if(creat_judge==7)
{
double data1;
double data2;
double data3;
cout<<"请输入长:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入宽:";
cin>>data2;
if(data2==0)
{
return;
}
cout<<"请输入高:";
cin>>data3;
if(data3==0)
{
return;
}
p=new RectangularParallelepiped(data1,data2,data3);
p->reArea();
p->reVolume();
}
p->next=NULL;
if(head==NULL)
{
head=p;
move=p;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE);
cout<<'\n'<<"第"<<creat_num<<"个链表创建成功!"<<'\n'<<endl;
if(creat_num<n)
{
cout<<"您现在正在创建第"<<(creat_num)+1<<"个链表"<<'\n'<<endl;
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
}
else
{
move->next=p;
move=p;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE);
cout<<'\n'<<"第"<<creat_num<<"个链表创建成功!"<<'\n'<<endl;
if(creat_num<n)
{
cout<<"您现在正在创建第"<<(creat_num)+1<<"个链表"<<'\n'<<endl;
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
}
}
}
void browselist(Shape *head)//遍历链表
{
if(head==NULL)
{
cout<<endl;
cout<<"您还没有建立链表呦~"<<endl<<endl;
return;
}
Shape *browse=NULL;
browse=head;
while(browse!=NULL)
{
browse->showData();
browse->reArea();
browse->reVolume();
browse=browse->next;
}
delete browse;
}
void insertlist(Shape * & head)//插入 第n个数据后插入数据
{
if(head==NULL)
{
cout<<endl;
cout<<"您还没有建立链表呦~"<<endl<<endl;
return;
}
int insert_num;
int select_num;
int i;
Shape *p=NULL;
Shape *judge=head;//判断插入的合法性
cout<<"在第__个链表后插入?";
cin>>insert_num;
for(i=2;i<=insert_num;i++)//判断插入的合法性
{
judge=judge->next;
}
if(judge==NULL)
{
cout<<'\n'<<"不合法的插入!"<<endl;
return;
}
cout<<endl;
cout<<"1 插入圆形的链表"<<endl<<"2 插入椭圆形的链表"<<endl<<"3 插入长方形的链表"<<endl<<"4 插入三角形的链表"<<endl<<"5 插入球体的链表"<<endl<<"6 插入圆柱体的链表"<<endl<<"7 插入长方体的链表"<<endl<<"当输入数据为0时退出!"<<endl;
cout<<endl<<"请输入你的选择:";
cin>>select_num;
if(insert_num==0)//如果在头结点插入
{
if(select_num==1)
{
int data1;
cout<<"请输入半径:";
cin>>data1;
if(data1==0)
{
return;
}
p=new Circle(data1);
p->reArea();
p->next=head;
head=p;
cout<<"数据成功插入!"<<endl;
}
else if(select_num==2)
{
int data1;
int data2;
cout<<"请输入长轴:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入短轴:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Elipse(data1,data2);
p->reArea();
p->next=head;
head=p;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE);
cout<<"数据成功插入!"<<endl;
}
else if(select_num==3)
{
int data1;
int data2;
cout<<"请输入长:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入短宽:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Rectangles(data1,data2);
p->reArea();
p->next=head;
head=p;
cout<<"数据成功插入!"<<endl;
}
else if(select_num==4)
{
int data1;
int data2;
cout<<"请输入底:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Triangle(data1,data2);
p->reArea();
p->next=head;
head=p;
cout<<"数据成功插入!"<<endl;
}
else if(select_num==5)
{
int data1;
cout<<"请输入半径:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入高:";
p=new Ball(data1);
p->reArea();
p->reVolume();
p->next=head;
head=p;
cout<<"数据成功插入!"<<endl;
}
else if(select_num==6)
{
int data1;
int data2;
cout<<"请输入底面半径:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Cylider(data1,data2);
p->reArea();
p->reVolume();
p->next=head;
head=p;
cout<<"数据成功插入!"<<endl;
}
else if(select_num==6)
{
int data1;
int data2;
int data3;
cout<<"请输入长:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入宽:";
cin>>data2;
if(data2==0)
{
return;
}
cout<<"请输入高:";
cin>>data3;
if(data3==0)
{
return;
}
p=new RectangularParallelepiped(data1,data2,data3);
p->reArea();
p->reVolume();
p->next=head;
head=p;
cout<<"数据成功插入!"<<endl;
}
}
else//如果不在头结点插入
{
Shape *m;//用于指向到指定的链表位置
int i=0;//用于循环到指定的链表位置
m=head;
for(i=1;i<insert_num;i++)
{
m=m->next;
}
if(select_num==1)
{
int data1;
cout<<"请输入半径:";
cin>>data1;
if(data1==0)
{
return;
}
p=new Circle(data1);
p->reArea();
p->next=m->next;
m->next=p;
cout<<"数据成功插入!"<<endl;
}
else if(select_num==2)
{
int data1;
int data2;
cout<<"请输入长轴:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入短轴:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Elipse(data1,data2);
p->reArea();
p->next=m->next;
m->next=p;
cout<<"数据成功插入!"<<endl;
}
else if(select_num==3)
{
int data1;
int data2;
cout<<"请输入长:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入宽:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Rectangles(data1,data2);
p->reArea();
p->next=m->next;
m->next=p;
cout<<"数据成功插入!"<<endl;
}
else if(select_num==4)
{
int data1;
int data2;
cout<<"请输入底:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Triangle(data1,data2);
p->reArea();
p->next=m->next;
m->next=p;
cout<<"数据成功插入!"<<endl;
}
else if(select_num==5)
{
int data1;
cout<<"请输入半径:";
cin>>data1;
if(data1==0)
{
return;
}
p=new Ball(data1);
p->reArea();
p->reVolume();
p->next=m->next;
m->next=p;
cout<<"数据成功插入!"<<endl;
}
else if(select_num==6)
{
int data1;
int data2;
cout<<"请输入底面半径:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Cylider(data1,data2);
p->reArea();
p->reVolume();
p->next=m->next;
m->next=p;
cout<<"数据成功插入!"<<endl;
}
else if(select_num==7)
{
int data1;
int data2;
int data3;
cout<<"请输入底面长:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"请输入宽:";
cin>>data2;
if(data2==0)
{
return;
}cout<<"请输入高:";
cin>>data3;
if(data3==0)
{
return;
}
p=new RectangularParallelepiped(data1,data2,data3);
p->reArea();
p->reVolume();
p->next=m->next;
m->next=p;
cout<<"数据成功插入!"<<endl;
}
}
}
void deletelist(Shape * & head)
{
if(head==NULL)
{
cout<<endl;
cout<<"您还没有建立链表呦~"<<endl<<endl;
return;
}
int delete_sel; //删除节点的位置
int delete_num;//选择删除指定相同的节点
int j=0;//用于选择删除指定相同的节点
Shape *d,*e,*f;//用于指向到指定的链表位置的前一位
d=head;
cout<<"1 删除圆形的节点"<<endl<<"2 删除椭圆形的节点"<<endl<<"3 删除长方形的节点"<<endl<<"4 删除三角形的节点"<<endl<<"5 删除球体的节点"<<endl<<"6 删除圆柱体的节点"<<endl<<"7 删除长方体的节点"<<endl<<"当输入数据为0时退出!"<<endl;
cout<<endl<<"请输入你的选择:";
cin>>delete_sel;
if(delete_sel>7)
{
cout<<"不合法输入";
return;
}
cout<<"删除此图形的第几个数据?";
cin>> delete_num;
for(j=0;j<delete_num;j++)
{
f=d;
for(;d->reflag()!=delete_sel;)
{
f=d;
d=d->next;
}
if((j+1)!=delete_num)
{d=d->next;}
}
if(d==head)
{
head=head->next;
delete d;
cout<<'\n'<<"删除成功!"<<endl;
}
else
{
e=f->next;
f->next=f->next->next;
delete e;
cout<<'\n'<<"删除成功!"<<endl;
}
/*if(delete_num==0)
{
cout<<"第1个节点才是头结点,请从新输入:";
cin>>delete_num;
}
else if(delete_num==1)
{
head=head->next;
delete d;
cout<<'\n'<<"删除成功!"<<endl;
}
else if(delete_num>1 && delete_num<999)
{
for(j=2;j<delete_num;j++)
{
d=d->next;
}
e=d->next;
d->next=d->next->next;
delete e;
cout<<'\n'<<"删除成功!"<<endl;
}*/
}
void turnlist(Shape * & head)//翻转链表
{
if(head==NULL)
{
cout<<endl;
cout<<"您还没有建立链表呦~"<<endl<<endl;
return;
}
Shape *t1=NULL;
Shape *t2=NULL;
Shape *t3=NULL;//三个配合来翻转
t1=head;
t2=t1->next;
t3=t2->next;
t1->next=NULL;
for(;t3!=NULL;)
{
t2->next=t1;
t1=t2;
t2=t3;
t3=t3->next;
}
if(t3==NULL)
{
t2->next=t1;
delete t3;
head=t2;
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE);
cout<<'\n'<<"链表反转成功!"<<'\n'<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
}
void savelist(Shape * & head)
{
if(head==NULL)
{
cout<<endl;
cout<<"您还没有建立链表呦~"<<endl<<endl;
return;
}
Shape *browse=head;
while(browse!=NULL)
{
browse->saveData();
browse=browse->next;
}
delete browse;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE);
cout<<endl<<"导出到文本成功!"<<endl<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
}
void readlist(Shape * & head)
{
head=NULL;
fstream read;
read.open("E:\\game\\list.txt",ios::in);
double m[9999];//文本数据存储
int i,j;
int judge;//只是个判断,不用定义为int
Shape *p=NULL;
Shape *move=NULL;
for(i=0;!read.eof();i++)
{
read>>m[i];
//m[i+1]=0;
}
for(j=0;j<i-1;j++)
{
if(m[j]==0)
{
if(m[j+1]==1)
{
double data1;
data1=m[j+2];
p=new Circle(data1);
}
else if(m[j+1]==2)
{
double data1;
double data2;
data1=m[j+2];
data2=m[j+3];
p=new Elipse(data1,data2);
}
else if(m[j+1]==3)
{
double data1;
double data2;
data1=m[j+2];
data2=m[j+3];
p=new Rectangles(data1,data2);
}
else if(m[j+1]==4)
{
double data1;
double data2;
data1=m[j+2];
data2=m[j+3];
p=new Triangle(data1,data2);
}
else if(m[j+1]==5)
{
double data1;
data1=m[j+2];
p=new Ball(data1);
}
else if(m[j+1]==6)
{
double data1;
double data2;
data1=m[j+2];
data2=m[j+3];
p=new Cylider(data1,data2);
}
else if(m[j+1]==7)
{
double data1;
double data2;
double data3;
data1=m[j+2];
data2=m[j+3];
p=new RectangularParallelepiped(data1,data2,data3);
}
}
//p->next=NULL;
if(head==NULL)
{
head=p;
//move=p;
}
else
{
move->next=p;
//move=p;
}
move=p;
p->next=NULL;
}
}
int main()
{
SetConsoleTitle("图形链表录入系统 CREATED BY 刘麒 2013.8");//设置标题
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
int data_num;//链表个数
int menu_sel;//菜单选择
Shape *head=NULL;
void creatlist(Shape * & head,int n);
void browselist(Shape *head);
void insertlist(Shape * & head);
void deletelist(Shape * & head);
void turnlist(Shape * & head);
void savelist(Shape * & head);
void readlist(Shape * & head);
while(1)
{
cout<<"■■■■■■■■■■■■■■" <<endl;
cout<<"■1 创建链表 ■"<<endl<<"■2 遍历链表 ■"<<endl<<"■3 插入链表 ■"<<endl<<"■4 删除链表 ■"<<endl<<"■5 反转链表 ■"<<endl<<"■6 存储链表到txt文件 ■"<<endl<<"■7 查看链表文件 ■"<<endl<<"■8 从txt文本中导入链表 ■"<<endl<<"■9 安全退出 ■"<<endl;
cout<<"■ !链表只可创建一次! ■"<<endl;
cout<<"■■■■■■■■■■■■■■" <<endl;
cout<<"请输入你的选择:";
cin>>menu_sel;
//int showsystime();
//showsystime();
if(menu_sel==9)
{
return 0;
}
else if(menu_sel==1)
{
if(head!=NULL)
{
cout<<endl<<"!链表只可创建一次!"<<endl<<"程序已退出!"<<endl;
return 0;
}
cout<<"请输入需要创建节点个数:";
cin>>data_num;
cout<<endl;
if(data_num==0)
{
cout<<"您没有创建链表,程序退出!"<<endl;
return 0;
}
creatlist(head,data_num);
}
else if(menu_sel==2)
{
browselist(head);
}
else if(menu_sel==3)
{
insertlist(head);
}
else if(menu_sel==4)
{
deletelist(head);
}
else if(menu_sel==5)
{
turnlist(head);
}
else if(menu_sel==6)
{
savelist(head);
}
else if(menu_sel==7)
{
system("E:\\game\\list.txt");
}
else if(menu_sel==8)
{
readlist(head);
}
}
}