实验八 泛型程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八泛型程序设计
软件1502 成进151303230
一、实验目的
1.了解链表类的定义与实现,学习其使用方法。
2.了解栈类的定义与实现,学习其使用方法。
3.了解队列类的定义与实现,学习其使用方法。
4.了解C++标准模板库STL的使用方法。
二、实验任务
1.编写程序link.h,实现教材中例9—6的链表类。在测试程序lab9—1.cpp中定义两个整型链表A和B,分别插入5个元素,然后把B中的元素加入A的尾部。
2.编写程序queue.h,用链表实现队列(或栈)类。在测试程序lab9—2.cpp中定义一个整型队列(或栈)对象,插入5个整数,压人队列(或栈),再依次取出并显示出来。
3.使用C++标准模板库(STL)中的双向队列类(deque)重新实现上一小题。
三、实验步骤
1.参照教材《C++语言程序设计》中链表类LinkeclI。ist的定义(教材中的例程9—6.h),给出其实现,注意合理使用NodIe类(教材中的例程9—3.h)的成员函数。在测试程序中定义整型链表A和B,分别插入5个元素,使用循环语句显示链表中的元素,然后把B中的元素加入A的尾部,再显示出来。
2.队列类的特点就是其元素的操作顺序为先入先出(FIFO),用上题中的链表类实现队列类,用链表类的成员函数实现队列的成员函数,在测试程序中定义一个整型队列对象,观察队列类中的元素先入先出的特点。
3.在程序中包含语句#include
四、实验程序
1、
#include "link.h"
int main()
{
LinkedList
for(int i=0;i<5;i++)
{
A.InsertRear(2*i+1);
B.InsertRear(2*i+2);
}
A.Reset();
cout << "链表A的元素为:" ;
while(!A.EndOfList())
{
cout << A.Data() << " ";
A.Next();
}
cout << endl;
B.Reset();
cout << "链表B的元素为:" ;
while(!B.EndOfList())
{
cout << B.Data() << " ";
B.Next();
}
cout << endl;
cout << "把B中的元素插入A中..." << endl;
B.Reset();
while(!B.EndOfList())
{
A.InsertRear(
B.Data());
B.Next();
}
A.Reset();
cout << "此时,链表A的元素为:" ;
while(!A.EndOfList())
{
cout << A.Data() << " ";
A.Next();
}
cout << endl;
}
#ifndef LINKEDLIST_CLASS
#define LINKEDLIST_CLASS
#include
#include
using namespace std;
#ifndef NULL
const int NULL = 0;
#endif // NULL
#include "9-3.h
template
class LinkedList
{
private:
Node
Node
int size;
int position;
Node
void FreeNode(Node
void CopyList(const LinkedList
public:
LinkedList(const LinkedList
~LinkedList(void);
LinkedList
int ListSize(void) const;
int ListEmpty(void) const;
void Reset(int pos = 0);
void Next(void);
int EndOfList(void) const;
int CurrentPosition(void) const;
void InsertFront(const T& item);
void InsertRear(const T& item);
void InsertAt(const T& item);
void InsertAfter(const T& item);
T DeleteFront(void);
void DeleteAt(void);
T& Data(void);
void ClearList(void);
};
template
Node
Node
{
Node
p = new Node
if (p == NULL)
{
cout << "Memory allocation failure!\n";
exit(1);
}
return p;
}
template
void LinkedList
{
delete p;
}
template
void LinkedList
Node
int pos;
while (p != NULL)
{