实验三 静态链表实现学生成绩处理

静态链表代码实现:

#include<iostream>
using namespace std;
const int maxsize=20;
struct snode
{float data;
int next;
};

class student{       //定义一个student类
int first,avail;
snode slist[maxsize];
public:
student();
student(float s[],int n);
~student(){count--;}
int length();
void insert(float x);
float get(int i);
int locate(float x);
void dele(int i);     //删除第i位
void printlist();   //遍历输出
static int count;
};
int student::count=0;
student::student(){   // 建立空的静态链表
first=0;avail=1;
	slist[first].next=-1;
slist[first].data=NULL;
}
student::student(float s[],int n)     //建立长度为n的静态链表
{first=0;avail=1;
	slist[first].next=1;
slist[avail].data=NULL;
for(int i=0;i<n;i++)
{
slist[avail].data=s[i];
slist[avail].next=avail+1;
avail++;
count++;
}slist[avail].next=-1;
}
int student::length(){    //返回静态链表长度
return count;
}
float student::get(int i)     //按位查找
{float x;
if(i<1||i>count) cout<<"查找位置错误"<<endl;
for(int n=0;n<count;n++)
{if(slist[n].next==i) x=slist[i].data;
}
return x;
}
int student::locate(float x)
{
	for(int i=1;i<=count;i++)
    if(slist[i].data==x) return slist[i-1].next;
	return 0;
}
void student::insert(float x)     //插入操作,插入x的值
{avail=count;
	if(count==maxsize) cout<<"静态链表已满"<<endl;
slist[avail].next=avail+1;
slist[avail+1].data=x;
slist[avail+1].next=-1;
count++;
}
void student::dele(int i)                //删除第i个结点操作
{
	if(i<1||i>count) return;
	else{
slist[i-1].next=slist[i].next;
	slist[i].next=-1;
	slist[i].data=NULL;
	count--;}
}
void student::printlist()     //遍历输出操作
{int s=slist[first].next;
cout<<"学生成绩为"<<"\t";
for(int i=1;i<count+1;i++)
{
	cout<<slist[s].data<<"\t";
s=slist[s].next;}

cout<<endl;
}    
void main()
{
	float s[5]={67,68,69,70,71.5};
	student a(s,5);
	cout<<"**************************\n"<<"静态链表实现学生成绩处理\n"<<"**************************\n";
	cout<<"共有"<<a.length()<<"位学生成绩 。"<<endl;
	a.printlist();
	cout<<"查找第三位学生成绩为 "<<a.get(3)<<endl;
	cout<<"成绩为70的为第"<<a.locate(70)<<"位"<<endl;
	a.insert(80);
	a.printlist();
	cout<<"删除第2个学生成绩 \n";
	a.dele(2);
	a.printlist();
	cout<<"共有"<<a.length()<<"位学生成绩 。"<<endl;
}


}

猜你喜欢

转载自blog.csdn.net/x1432553805/article/details/80209514