学生类
#include<string>
#include<stdio.h>
#include<iostream>
using namespace std;
class Student;
ostream& operator<<(ostream& os,const Student& s);
istream& operator>>(istream& is,Student& s);
class Student
{
public:
friend ostream& operator<<(ostream& os,const Student& s);
friend istream& operator>>(istream& is,Student& s);
private:
string name;
float Score;
};
ostream& operator<<(ostream& os,const Student& s)
{
os<<s.name<<"的成绩为"<<s.Score<<endl;
return os;
}
istream& operator>>(istream& is,Student& s)
{
cout<<"输入学生姓名和成绩"<<endl;
is>>s.name>>s.Score;
return is;
}
struct Node
{
Student s;
Node *next;
};
class LinkList
{
private:
Node *head;
public:
LinkList();
~ LinkList();
void CreateLinkList(int m);
void Insert(int i,Student s);
void Delete(int m);
void DispList();
};
LinkList::LinkList()
{
head = new Node;
head -> next = NULL;
}
LinkList::~LinkList()
{
Node *p = head->next;
Node *q;
while(p->next)
{
q = p;
p = p->next;
delete q;
}
head = NULL;
}
void LinkList::CreateLinkList(int m)
{
int i = 0;
Node *p = head;
Student s;
for(i=0;i<m;i++)
{
Node *q = new Node;
cin>>s;
q->s = s;
/*q->next = p->next;
p->next = q;*/ //倒序
p->next = q;
p = q;//正序
}
p->next = NULL;
}
void LinkList::DispList()
{
Node *p;
p = head->next;
while(p != NULL)
{
cout<<p->s;
p = p->next;
}
}
void LinkList::Delete(int m)
{
int i =0;
Node *p = head;
while(p && i!=m)
{
p = p->next;
i++;
}
Node *q;
q = p->next;
p->next = q->next;
delete q;
}
void LinkList::Insert(int i,Student s)
{
int m = 0;
Node *p = head;
while(p->next != NULL && m!= i)
{
p = p->next;
m++;
}
Node *q = new Node;
q->s = s;
q->next = p->next;
p->next = q;
}
int main()
{
LinkList s;
s.CreateLinkList(5);
s.DispList();
Student m;
cin>>m;
s.Insert(3,m);
s.DispList();
s.Delete(3);
s.DispList();
getchar();
return 0;
}