欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-16 22:51:10
...

静态链表代码实现:

#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;
}


}实验三 静态链表实现学生成绩处理
相关标签: 数据结构 c