#include<iostream.h>
const int MaxSize=100;
struct Node
{
intdata;
intnext;
};
class Student
{
public:
Student();
Student(inta[],int n);
~Student(){}
staticint count;
intLength();
voidInsert(int i,int x);
intDelete(int i);
intGet(int i);
intLocate(int x);
voidPrint();
private:
intnode[10];
intfirst;
intavail;
intlength;
};
int Student::count=0;
Student::Student(int a[],int n)
{
inti,j;
Node*s;
length=0;
for(i=0;i<10;i++)
{
node[i].next=i+1;
}
node[Maxsize-1].next=-1;
avail=2;
first=1;
node[first].next=-1;
for (j=n-1;j>=0;j--)
{
if (avail==-1)
{
break;
}
s=avail;
avail=node[avail].next;
node[s].data=score[j];
node[s].next=node[first].next;
node[first].next=s;
length++;
}
}
int Student::Length()
{
Node *p;
p=first->next;
count=0;
while(p!=NULL)
{
p=p->next;
count++;
}
return length;
}
void Student::Insert(int i,int x)
{
if(i<=0||i>length)throw"位置非法";
intp,s,j;
p=first;
for(j=0;j<i;j++)
{
p=node[p].next;
}
s=node[avail].next;
node[avail].data = x;
node[avail].next = node[p].next;
node[p].next = avail;
avail = s;
length++;
}
int Student::Delete(int i)
{
intp,q,j,s;
if(i<=0||i>length+1)throw"位置非法";
p=first;
for(j=1;j<=i;j++)
{
p=node[p].next;
}
q=node[p].next;
s=node[p].data;
node[p].next= node[q].next;
node[q].next = avail;
avail = q;
length--;
}
int Student::Get(int i)
{
intp,j;
if(i<=0||i>length)throw"位置非法";
p=first;
for(j=0;j<i;j++)
{
p=node[p].next;
}
returnnode[p].data;
}
int Student::Locate(int x)
{
count=0;
intp=first;
while(node[p].next!=-1)
{
p=node[p].next;
if(node[p].data==x)
returncount+1;
count++;
}
return-1;
}
void Student::Print()
{
ints,i;
s=node[first].next;
for(i=1;i<=length;i++)
{
cout<<node[s].data<<"";
s=node[s].next;
}
}
void main()
{
intscore[5]={60,65,70,80,85};
StudentS(score,5);
cout<<"学生的体育成绩:"<<endl;
S.Print();
cout<<endl<<endl<<"在位置3插入成绩75,结果如下:"<<endl;
S.Insert(3,75);
S.Print();
cout<<endl<<endl<<"在位置6删除成绩为:"<<S.Delete(6)<<endl;
cout<<"删除后结果如下:"<<endl;
S.Print();
cout<<endl<<endl<<"位置4的成绩为:"<<S.Get(4)<<endl;
cout<<endl<<endl<<"成绩65所在的位置为:"<<S.Locate(65)<<endl;
}
代码不完整,不会打了