1、学校代码: 10128 学 号: 20905060 《面向对象程序设计》试验汇报 ( 题 目: 群体类和群体数据 学生姓名: 燕飞 学 院: 理学院 系 别: 数学系 专 业: 信息与计算科学 班 级: 信计12-2 任课老师: 侯睿 二 〇 一 五 年 十 一 月 一、 试验目 1、 了解节点类申明和实现, 学习其使用方法 2、 了解链表类申明和实现,
2、学习其使用方法 3、 了解栈类申明和实现, 学习其使用方法 4、 了解队列类申明和实现, 学习其使用方法 5、 掌握对数组元素排序方法 6、 掌握对数组元素查找方法 二、 试验内容 1、 编写程序Node.h实现例9-5节点类, 并编写测试程序lab9_1.cpp, 实现链表基础操作。 2、 编写程序link.h实现例9-6链表类, 在测试程序lab_2.cpp中申明两个整型链表A和B, 分别插入5元素, 然后把B中元素加入A尾部。 3、 编写程序queue.h, 用链表实现队列(或栈), 在测试程序lab9_3.cpp中申明一个整型队列(或栈)对象, 插入5个整数, 压入队列
3、或栈), 再依次取出并显示出来。
4、 (选做)申明course(课程)类, 有属性: 课程名char name[21]、 成绩short score; 在试验七student类中增加属性; 所修课程course, 为课程类对象链表。在测试程序中测试这个类, 学生类与课程类关系如图
5、 将直接插入排序、 直接选择排序、 冒泡排序、 次序查找函数封装到第九章数组类中, 作为组员函数, 实现并测试这个类。
三、 试验程序
1、
#ifndef NODE_CLASS
#define NODE_CLASS
template
4、 private:
Node 5、>* ptrnext) :
data(item), next(ptrnext)
{}
template 6、tempPtr = next;
if (next == NULL)
return NULL;
next = tempPtr->next;
return tempPtr;
}
#endif
#ifndef NODE_LIBRARY
#define NODE_LIBRARY
#include 7、tem, Node 8、ss T>
void PrintList(Node 9、 currPtr = currPtr->NextNode();
}
}
template 10、 currPtr->NextNode();
}
return 0;
}
template 11、tFront(head,item);
else
{
while(currPtr->NextNode() != NULL)
currPtr = currPtr->NextNode();
newNode = GetNode(item);
currPtr->InsertAfter(newNode);
}
}
template 12、
if (head != NULL)
{
head = head->NextNode();
delete p;
}
}
template 13、
{
prevPtr = currPtr;
currPtr = currPtr->NextNode();
}
if (currPtr != NULL)
{
if(prevPtr == NULL)
head = head->NextNode();
else
prevPtr->DeleteAfter();
delete currPtr;
}
}
template 14、e 15、 NULL)
InsertFront(head,item);
else
{
newNode = GetNode(item);
prevPtr->InsertAfter(newNode);
}
}
template 16、nextPtr = currPtr->NextNode();
delete currPtr;
currPtr = nextPtr;
}
head = NULL;
}
#endif
#include 17、r (i=0;i < 10;i++)
{
cin>>item;
InsertFront(head, item);
}
cout << "List: ";
PrintList(head,noNewline);
cout << endl;
cout << "请输入一个需要删除整数: ";
cin >> key;
prevPtr = head;
while (Find(head,key,prevPtr) != NULL)
{
if(prevPtr == NUL 18、L)
head = head->NextNode();
else
delPtr=prevPtr->DeleteAfter();
delete delPtr;
}
cout << "List: ";
PrintList(head,noNewline);
cout << endl;
ClearList(head);
}
2、
#include "link.h"
int main()
{
LinkedList 19、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.Ne 20、xt();
}
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_C 21、LASS
#define LINKEDLIST_CLASS
#include 22、 int position;
Node 23、const LinkedList 24、);
void InsertAt(const T& item);
void InsertAfter(const T& item);
T DeleteFront(void);
void DeleteAt(void);
T& Data(void);
void ClearList(void);
};
template 25、T>* ptrNext)
{
Node 26、CopyList(const LinkedList 27、 prevPtr = currPtr;
currPtr = currPtr->NextNode();
}
}
template 28、 NULL;
prevPtr = currPtr = NULL;
size = 0;
position = -1;
CopyList(L);
}
template 29、
FreeNode(currPosition);
currPosition = nextPosition;
}
front = rear = NULL;
prevPtr = currPtr = NULL;
size = 0;
position = -1;
}
template 30、const LinkedList 31、mplate 32、edList 33、
}
if(pos == 0)
{
prevPtr = NULL;
currPtr = front;
position = 0;
}
else
{
currPtr = front->NextNode();
prevPtr = front;
startPos = 1;
for(position=startPos; position != pos; position++)
{
prevPtr = currPtr;
34、 currPtr = currPtr->NextNode();
}
}
}
template 35、rtFront(const T& item)
{
if (front != NULL)
Reset();
InsertAt(item);
}
template 36、 rear->InsertAfter(newNode);
rear = newNode;
}
currPtr = rear;
position = size;
size++;
}
template 37、
}
else
{
newNode = GetNode(item);
prevPtr->InsertAfter(newNode);
}
if (prevPtr == rear)
{
rear = newNode;
position = size;
}
currPtr = newNode;
size++;
}
template 38、m)
{
Node 39、 position = size;
}
else
position++;
prevPtr = currPtr;
currPtr = p;
}
size++;
}
template 40、
}
item = currPtr->data;
DeleteAt();
return item;
}
template 41、ont = front->NextNode();
}
else
p = prevPtr->DeleteAfter();
if (p == rear)
{
rear = prevPtr;
position--;
}
currPtr = p->NextNode();
FreeNode(p);
size--;
}
#endif
3、
#ifndef QUEUE_CLASS
#define QUEUE_CLASS
#include 42、ude 43、 int QEmpty(void) const;
void QClear(void);
};
template 44、emplate 45、for an empty queue!" << endl;
exit(1);
}
return queueList.DeleteFront();
}
template 46、return queueList.Data();
}
#endif
#ifndef LINKEDLIST_CLASS
#define LINKEDLIST_CLASS
#include 47、 Node 48、inkedList(void);
LinkedList 49、t 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 50、 item, Node
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818