信管117118李志荣数据结构实验三---间接寻址实现

//head.h
const int Maxsize = 5;
class Indirection
{
public:
	Indirection() { count = 0; }
	void Set();
	void Delete();
	void Seek();
	void Print();
	void Insert();
private:
	double* score[Maxsize];
	int count;
};

#include<iostream>
#include"head.h"
using namespace std;
int main()
{
	Indirection Student;
	cout << "MENU";
	int use = 0;
	while (use != 6)
	{
		cout << "\n1.SET\n2.Delete\n3.Seek\n4.Print\n5.Insert\n6.Exit\nNow input a number to use function:";
		cin >> use;
		switch (use)
		{
		case 1:Student.Set(); break;
		case 2:Student.Delete(); break;
		case 3:Student.Seek(); break;
		case 4:Student.Print(); break;
		case 5:Student.Insert(); break;
		default:
			break;
		}
	}
	return 0;
}

//function.cpp
#include<iostream>
#include"head.h"
using namespace std;

void Indirection::Set()
{
	if (count == Maxsize) throw "overflow";
	cout << "enter a score:";
	double *s = new double;
	cin >> *s;
	score[count++] = s;
}
void Indirection::Delete()
{
	if (count == 0) throw "no data";
	cout << "enter the location you want to delete";
	int location;
	cin >> location;
	if (location > Maxsize || location < 0) throw "wrong location";
	if (score[location - 1] != NULL)
	{
		cout << "the score:" << *score[location - 1] << "is destroied";
		score[location - 1] = NULL;
		count--;
	}
	else cout << "no score you can delete";
}
void Indirection::Seek()
{
	if (count == 0) throw "no data";
	cout << "enter the location you want to find";
	int location;
	cin >> location;
	if (location > Maxsize || location < 0) throw "wrong location";
	if (score[location - 1] != NULL)
		cout << "the score:" << *score[location - 1];
}
void Indirection::Print()
{
	if (count == 0) throw "no data";
	cout << "all score:";
	for (int i = 0; i<count;)
	{
		if (score[i] != NULL)
		{
			cout << *score[i] << "    ";
			i++;
		}
	}
}
void Indirection::Insert()
{
	if (count == Maxsize) throw "overflow";
	cout << "enter the location you want to insert";
	int location;
	cin >> location;
	if (location > Maxsize || location < 0) throw "wrong location";
	double *s = new double;
	cout << "the insert score are:";
	cin >> *s;
	if (score[location - 1] == NULL)
	{
		score[location - 1] = s;
		count++;
	}
	else
	{
		for (int i = Maxsize - 1; i >= location - 1; i--)
		{
		score[i] = score[i - 1];
		}
		score[location-1] = s;
		count++;
	}
}

猜你喜欢

转载自blog.csdn.net/rumple49/article/details/80149484