|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<iostream.h>
#include <string.h>
class CStudent
{ static int num;//对学生生成学号,静态成员生成
long xuehao;
char name[11];
int nianling;
public:
CStudent();//构造函数
CStudent(CStudent&);//拷贝构造函数(无参)
CStudent(char*,int);//name与年龄构造生成,形式参数可以给或者不给,但是在实现体中一定要给出来
void SetNL(int n){nianling=n;}//设置年龄的方法
void SetName(char*name)//设置姓名的方法
{
strcpy(this->name,name);
}
int GetNL();//获得年龄的方法
char*GetName(){return name;}//获得姓名的方法
void Print()//输出信息的方法
{cout<<"学号:"<<xuehao<<" 姓名:"<<name<<" 年龄:"<<nianling;}
};
int CStudent::num=10000;//
CStudent::CStudent()//学生的构造函数
{num++;
xuehao=num;//有一个学生纠给出一个学号
}
CStudent::CStudent(char*name,int nl)
{num++;
xuehao=num;
strcpy(this->name,name);
nianling=nl;
}
CStudent::CStudent(CStudent &st)
{num++;
xuehao=num;
strcpy(this->name,st.name);
nianling=st.nianling;
}
int CStudent::GetNL()
{
return nianling;
}
class CNode//结点
{CStudent data;//数据域
CNode*next;//指针域
public:
CNode();//对CNode设置无参构造函数
CNode(CNode &);//设置带参数构造函数,写法在外面给出
void SetNext(CNode*);//初始化
CNode*GetNext();//获得下一个结点
CStudent GetData()
{
return data;
}
void SetData(CStudent&);//设置数据域
};
CNode::CNode()
{
next=0;
}
CNode::CNode(CNode &st)
{
data=st.data;
next=st.next;
}
CNode * CNode:: GetNext()//
{
return next;
}
void CNode:: SetNext(CNode*n)
{
next=n;;
}
void CNode:: SetData(CStudent&st)
{
data.SetName(st.GetName());
data.SetNL(st.GetNL());
}
class CSingleLink//单链表
{ CNode head;//链表头指针
int num;//节点数
public:
CSingleLink();//创建空表
void InsertNode(CNode&,int method=0,int pos=0);//method=0头节点插入,1,指定位置插入,pos,2.尾部char
CNode*FindCNode(CNode&);//给出CNode的结点
void Visit_Link()
{
CNode*p=head.GetNext();
while(p)
{ p->GetData().Print();
cout<<endl;
p=p->GetNext();
}
}
};
CSingleLink::CSingleLink()
{num=0;
}
void CSingleLink::InsertNode(CNode &n,int method,int pos)//method=0头节点插入,1,指定位置插入,pos,2.尾部char
{
switch(method)
{case 0://头结点插入方式
n.SetNext(head.GetNext());
head.SetNext(&n);
num++;
break;
case 1://指定位置pos插入
break;
case 2://尾部插入
{
CNode*tail=head.GetNext();
if(!tail){ n.SetNext(head.GetNext());
head.SetNext(&n);}
else{
while(tail->GetNext())
tail=tail->GetNext();
tail->SetNext(&n);
}
num++;
}
break;
default:;
}
}
void main()
{
CSingleLink sgllinkst;//
CNode st;
st.SetData(CStudent("张三",22));
sgllinkst.InsertNode(st);
CNode st1;
st1.SetData(CStudent("李四",25));
CNode st2;
st2.SetData(CStudent("王五",18));
CNode st3;
st3.SetData(CStudent("胡明",30));
sgllinkst.InsertNode(st1);
sgllinkst.InsertNode(st2);
sgllinkst.InsertNode(st3,2);
sgllinkst.Visit_Link();
}
如何补充case1 内容 |
|