您好,欢迎访问三七文档
1C++程序设计实验报告C++ExperimentReport学生所在学院:信息科学与工程学院学生所在班级:信息安全12-1学生姓名:______冯星伟_______学号:120104070017指导教师:周军峰教务处2014年6月2目录一、实验目的………………………………………………………03二、实验要求………………………………………………………03三、实验内容………………………………………………………03四、主要仪器平台…………………………………………………04五、实验步骤………………………………………………………04六、调试分析………………………………………………………05七、附件:源代码…………………………………………………173一、实验目的1)双向链表的实现2)添加结点3)删除结点4)输出5)查询6)修改重点练习:如何动态添加和释放结点结点数据的初始化和资源释放代码放在那里?链表数据的初始化和资源释放代码放在那里?二、实验要求1)链表元素中要有指针指向动态分配的内存空间,练习析构函数的操作规则2)链表应该至少有两个类,Node类和List类,Node类的构造和析构函数负责结点本身的初始化和空间回收,List类负责整个链表的管理工作,其构造和析构函数负责整个链表的初始化和回收3)从List类派生出Stack和Queue,并使其具有自身的操作特性,练习派生类的概念4)从List类派生出Set类,负责集合操作的实现A.要求:具有差“—”,并”+”union,交and三种操作,其中前两个是运算符的重载,第三个并非运算符的重载)B.练习要点:理解并、交、差操作并不影响参与操作的集合,实现并交差操作三、实验内容1)构造函数CList:Constructsanemptyorderedlist.2)获得头/尾指针GetHead:ReturnstheheadelementofthelistGetTail:Returnsthetailelementofthelist3)链表元素操作RemoveHead:Removestheelementfromtheheadofthelist.RemoveTail:Removestheelementfromthetailofthelist.AddHead:Addsanelement(oralltheelementsinanotherlist)totheheadofthelist(makesanewhead).函数重载AddTail:Addsanelement(oralltheelementsinanotherlist)to4thetailofthelist(makesanewtail).函数重载RemoveAll:Removesalltheelementsfromthislist.Operator+()运算符重载函数4)遍历操作GetNextGetsthenextelementforiterating.GetPrevGetsthepreviouselementforiterating.5)检索/修改操作GetAtGetstheelementatagivenposition.SetAtSetstheelementatagivenposition.RemoveAtRemovesanelementfromthislist,specifiedbyposition.6)插入操作InsertBefore:Insertsanewelementbeforeagivenposition.InsertAfter:Insertsanewelementafteragivenposition.7)查询操作Find:Getsthepositionofanelementspecifiedbypointervalue.FindIndex:Getsthepositionofanelementspecifiedbyazero-basedindex.8)状态测试GetCount:Returnsthenumberofelementsinthislist.IsEmpty:Testsfortheemptylistcondition(noelements).四、主要仪器平台PC机;windows7操作系统;visualC++6.0五、实验步骤1)建立双向链表classNode{…};classList{…};2)建立通向双向链表的派生类classStack:publicList{…};classQueue:publicList{…};classSet:publicList{public:friendListoperator+(Lista,Listb);friendListoperator-(Lista,Listb);friendListoperator&(Lista,Listb);};3)建立欢迎界面5voidLoc(intx,inty)voidHideCursor()voiddraw_windows()4)建立退出系统界面voidAboutMe()5)建立主菜单intmain()六、调试分析1)欢迎界面62)主菜单73)初始化双向链表84)插入学生记录95)查询学生记录1011126)删除学生记录137)显示所有的学生记录148)求并集159)求差集1610)求交集1711)退出系统界面七、附件:源代码#includeiostream.h#includestring.h#includectime#includewindows.h//*********************************classNode{public:charname[10];charsex[10];intnum;intscore;Node*pre;Node*next;Node();voidinit_node();~Node();18};//***********************************Node::Node(){pre=NULL;next=NULL;}voidNode::init_node(){cout请输入学生的学号:\t;cinnum;cout请输入学生的姓名:\t;cinname;cout请输入学生的性别:\t;cinsex;cout请输入学生的分数:\t;cinscore;}//************************************classList{public:intlength;Node*PHead;Node*PTail;List(Node*head=NULL,Node*tail=NULL);Node*get_head();Node*get_tail();Node*GetPrev(Node*p);Node*GetNext(Node*p);Node*GetAt(Node*head,intn);voidcreat_head(Node*s);voidcreat_List();voidshow_List(ListL);voidSetAt(Node*head,intn);voidRemoveAt(Node*head,intn);voidInsertBefore(Node*head,intn);voidInsertAfter(Node*head,intn);intFind(Node*head,Node*s);19intFindIndex(Node*head,inte);};//************************************List::List(Node*head,Node*tail){PHead=head;PTail=tail;}//************************************Node*List::get_head(){returnPHead;}//************************************Node*List::get_tail(){returnPTail;}//************************************Node*List::GetPrev(Node*p){Node*q=p;q=q-pre;returnq;}//************************************Node*List::GetNext(Node*p){Node*q=p;q=q-next;returnq;}//************************************Node*List::GetAt(Node*head,intn){Node*p=head;inti=1;while(in){20p=p-next;i++;}returnp;}//************************************voidList::creat_head(Node*s){PHead=s;}voidList::creat_List(){cout请输入链表长度(结点数):;cinlength;PHead=newNode;Node*p,*q;p=q=PHead;p-init_node();for(inti=1;ilength;i++){q=newNode;q-init_node();p-next=q;q-pre=p;p=q;}PTail=q;}//**************************************voidList::show_List(ListL){Node*head;head=L.get_head();while(head){cout学号:head-num\t姓名:head-name\t性别:head-sex\t分数:head-scoreendl;head=head-next;21}}//**************************************voidList::SetAt(Node*head,intn){Node*p=head;inti=1;Node*q=newNode;q-init_node();while(in-1){p=p-next;i++;}q-next=p-next;p-next-pre=q;q-pre=p;p-next=q;}//******************************************voidList::RemoveAt(Node*head,intn){Node*p=head;Node*q;inti=1;while(in-1){p=p-next;i++;}q=p-next;p-next=q-next;q-next-pre=p;}//*********************************************voidList::InsertBefore(Node*head,intn){Node*p=head;inti=1;22Node*q=newNode;q-init_node();while(in){p=p-next;i++;}q-pre=p-pre;p-pre-next=q;q-next=p;p-pre=q;}//******************************************voidList::InsertAfter(Node*head,intn){Node*p=head;inti=1;Node*q=newNode;q-init_node();while(in){p=p-next;i++;}q-next=p-next;p-next-pre=q;q-pre=p;p-next=q;}//***************************************
本文标题:C++上机实验报告
链接地址:https://www.777doc.com/doc-5861694 .html