首页 > 试题广场 >

可以将简单列表描述成下面这样:

[问答题]
可以将简单列表描述成下面这样:
1、可存储0或多个某种类型的列表;
2、可创建空列表;
3、可在列表中添加数据项
4、可确定列表是否为空;
5、可确定列表是否为满;
6、可访问列表中的每一个数据项,并对它执行某种操作。
可以看到,这个列表确实很简单,例如,它不允许插入或删除数据项。
请设计一个List类来表示这种抽象类型。您应提供头文件list.h和实现文件list.cpp,前者包含类定义,后者包含类方法的实现。您还应创建一个简短的抽象来使用这个类。


推荐
该列表的规范很简单,这主要旨在简化这个编程练习,可以选择使用数组或链表来实现该列表,但公有接口不应依赖于所做的选择。也就是说,公有接口不应有数组索引、节点指针等。应使用通用概念来表达创建列表、在列表中添加数据项等操作。对于访问数据项以及执行操作,通常应使用将函数指针作为参数的函数来处理:
void visit(void (*pf) (Item &));
其中,pf指向一个将Item引用作为参数的函数(不是成员函数),Item是列表中数据项的类型。visit()函数将该函数用于列表中的每个数据项。
发表于 2018-05-02 20:47:29 回复(0)
#ifndef LIST_H_
#define LIST_H_

typedef unsigned long Item;
void visit_Item(Item&);

class List
{
public:
    List();
    bool isempty() const;
    bool isfull() const;
    bool add(const Item &item);
	void vist(void (*pf)(Item&));
 
private:
    enum {MAX=10};
    Item items[MAX];
    int top;
};
#endif LIST_H_
//以上为头文件
#include <iostream>
#include "list.h"
using namespace std;

List::List()
{
	top=0;
}
bool List::isempty() const
{
	return top==0;
}
bool List::isfull() const
{
	return top==MAX;
}
bool List::add(const Item &item)
{
	if (top<MAX)
	{
		items[top++]=item;
		return true;
	}
	else return false;
}
void List::vist(void (*pf)(Item&))
{
	for (int i = 0; i < top; i++)
	{
		pf(items[i]);
	}
}
void visit_Item (Item &item)
{
	cout<<"The item's info:"<<item<<endl;
}
int main()
{
	List list;
	Item item=0;
	cout<<"Enter the long unsigned number:";
	cin>>item;
	while (item!=0)
	{
		cin.get();
		list.add(item);
		cout<<"Enter the unsigned long item";
		cin>>item;
	}
	cout<<"Now end of add element,start to visit:"<<endl;
	list.vist(visit_Item);
	system("pause");
	return 0;
}

发表于 2021-03-09 21:55:43 回复(0)