实验报告群体类和群体数据.docx

上传人:b****6 文档编号:3090450 上传时间:2022-11-17 格式:DOCX 页数:40 大小:42.45KB
下载 相关 举报
实验报告群体类和群体数据.docx_第1页
第1页 / 共40页
实验报告群体类和群体数据.docx_第2页
第2页 / 共40页
实验报告群体类和群体数据.docx_第3页
第3页 / 共40页
实验报告群体类和群体数据.docx_第4页
第4页 / 共40页
实验报告群体类和群体数据.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

实验报告群体类和群体数据.docx

《实验报告群体类和群体数据.docx》由会员分享,可在线阅读,更多相关《实验报告群体类和群体数据.docx(40页珍藏版)》请在冰豆网上搜索。

实验报告群体类和群体数据.docx

实验报告群体类和群体数据

题目:

群体类和群体数据

学生姓名:

燕飞

学院:

理学院

系别:

数学系

专业:

信息与计算科学

班级:

信计12-2

任课教师:

侯睿

二〇一五年十一月

一、实验目的

1、了解节点类的声明和实现,学习其使用方法

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个整数,压入队列(或栈),再依次取出并显示出来。

4、(选做)声明course(课程)类,有属性:

课程名charname[21]、成绩shortscore;在实验七的student类中增加属性;所修课程course,为课程类对象的链表。

在测试程序中测试这个类,学生类与课程类关系如图

5、将直接插入排序、直接选择排序、冒泡排序、顺序查找函数封装到第九章的数组类中,作为成员函数,实现并测试这个类。

三、实验程序

1、

#ifndefNODE_CLASS

#defineNODE_CLASS

template

classNode

{

private:

Node*next;

public:

Tdata;

Node(constT&item,Node*ptrnext=NULL);

voidInsertAfter(Node*p);

Node*DeleteAfter(void);

Node*NextNode(void)const;

};

template

Node:

:

Node(constT&item,Node*ptrnext):

data(item),next(ptrnext)

{}

template

Node*Node:

:

NextNode(void)const

{

returnnext;

}

template

voidNode:

:

InsertAfter(Node*p)

{

p->next=next;

next=p;

}

template

Node*Node:

:

DeleteAfter(void)

{

Node*tempPtr=next;

if(next==NULL)

returnNULL;

next=tempPtr->next;

returntempPtr;

}

#endif

#ifndefNODE_LIBRARY

#defineNODE_LIBRARY

#include

#include

#include"9_5.h"

usingnamespacestd;

template

Node*GetNode(constT&item,Node*nextPtr=NULL)

{

Node*newNode;

newNode=newNode(item,nextPtr);

if(newNode==NULL)

{

cerr<<"Memoryallocationfailure!

"<

exit

(1);

}

returnnewNode;

}

enumAppendNewline{noNewline,addNewline};

template

voidPrintList(Node*head,AppendNewlineaddnl=noNewline)

{

Node*currPtr=head;

while(currPtr!

=NULL)

{

if(addnl==addNewline)

cout<data<

else

cout<data<<"";

currPtr=currPtr->NextNode();

}

}

template

intFind(Node*head,T&item,Node*&prevPtr)

{

Node*currPtr=head;

prevPtr=NULL;

while(currPtr!

=NULL)

{

if(currPtr->data==item)

return1;

prevPtr=currPtr;

currPtr=currPtr->NextNode();

}

return0;

}

template

voidInsertFront(Node*&head,Titem)

{

head=GetNode(item,head);

}

template

voidInsertRear(Node*&head,constT&item)

{

Node*newNode,*currPtr=head;

if(currPtr==NULL)

InsertFront(head,item);

else

{

while(currPtr->NextNode()!

=NULL)

currPtr=currPtr->NextNode();

newNode=GetNode(item);

currPtr->InsertAfter(newNode);

}

}

template

voidDeleteFront(Node*&head)

{

Node*p=head;

if(head!

=NULL)

{

head=head->NextNode();

deletep;

}

}

template

voidDelete(Node*&head,Tkey)

{

Node*currPtr=head,*prevPtr=NULL;

if(currPtr==NULL)

return;

while(currPtr!

=NULL&&currPtr->data!

=key)

{

prevPtr=currPtr;

currPtr=currPtr->NextNode();

}

if(currPtr!

=NULL)

{

if(prevPtr==NULL)

head=head->NextNode();

else

prevPtr->DeleteAfter();

deletecurrPtr;

}

}

template

voidInsertOrder(Node*&head,Titem)

{

Node*currPtr,*prevPtr,*newNode;

prevPtr=NULL;

currPtr=head;

while(currPtr!

=NULL)

{

if(itemdata)

break;

prevPtr=currPtr;

currPtr=currPtr->NextNode();

}

if(prevPtr==NULL)

InsertFront(head,item);

else

{

newNode=GetNode(item);

prevPtr->InsertAfter(newNode);

}

}

template

voidClearList(Node*&head)

{

Node*currPtr,*nextPtr;

currPtr=head;

while(currPtr!

=NULL)

{

nextPtr=currPtr->NextNode();

deletecurrPtr;

currPtr=nextPtr;

}

head=NULL;

}

#endif

#include

#include"9_5.h"

#include"node.h"

usingnamespacestd;

intmain()

{

Node*head=NULL,*prevPtr,*delPtr;

inti,key,item;

for(i=0;i<10;i++)

{

cin>>item;

InsertFront(head,item);

}

cout<<"List:

";

PrintList(head,noNewline);

cout<

cout<<"请输入一个需要删除的整数:

";

cin>>key;

prevPtr=head;

while(Find(head,key,prevPtr)!

=NULL)

{

if(prevPtr==NULL)

head=head->NextNode();

else

delPtr=prevPtr->DeleteAfter();

deletedelPtr;

}

cout<<"List:

";

PrintList(head,noNewline);

cout<

ClearList(head);

}

2、

#include"link.h"

intmain()

{

LinkedListA,B;

for(inti=0;i<5;i++)

{

A.InsertRear(2*i+1);

B.InsertRear(2*i+2);

}

A.Reset();

cout<<"链表A的元素为:

";

while(!

A.EndOfList())

{

cout<

A.Next();

}

cout<

B.Reset();

cout<<"链表B的元素为:

";

while(!

B.EndOfList())

{

cout<

B.Next();

}

cout<

cout<<"把B中的元素插入A中..."<

B.Reset();

while(!

B.EndOfList())

{

A.I

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1