【教学课件】第九章群体类.ppt
《【教学课件】第九章群体类.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第九章群体类.ppt(62页珍藏版)》请在三一办公上搜索。
1、第九章 群体类,清华大学计算机与信息管理中心郑 莉,C+语言程序设计,2,本章主要内容,线性群体线性群体的概念直接访问群体-数组类顺序访问群体-链表类栈类队列类,3,群体的概念,群体是指由多个数据元素组成的集合体。群体可以分为两个大类:线性群体和非线性群体。线性群体中的元素按位置排列有序,可以区分为第一个元素、第二个元素等。非线性群体不用位置顺序来标识元素。,4,线性群体的概念,线性群体中的元素次序与其位置关系是对应的。在线性群体中,又可按照访问元素的不同方法分为直接访问、顺序访问和索引访问。在本章我们只介绍直接访问和顺序访问。,5,数组,静态数组是具有固定元素个数的群体,其中的元素可以通过下
2、标直接访问。缺点:大小在编译时就已经确定,在运行时无法修改。动态数组由一系列位置连续的,任意数量相同类型的元素组成。优点:其元素个数可在程序运行时改变。,直接访问线性群体,6,动态数组类模板,数组类模板:例9.1(9_1.h),直接访问线性群体,#ifndef ARRAY_CLASS#define ARRAY_CLASS#include#include#ifndef NULLconst int NULL=0;#endif/NULLenum ErrorType invalidArraySize,memoryAllocationError,indexOutOfRange;char*errorMsg
3、=Invalid array size,Memory allocation error,Invalid index:;,template class Array private:T*alist;int size;void Error(ErrorType error,int badIndex=0)const;public:Array(int sz=50);Array(const Array/类成员函数的实现略,9,Array类的应用,例9.2 求范围2N中的质数,N在程序运行时由键盘输入。,直接访问线性群体,#include#include#include 9_1.hvoid main(void
4、)Array A(10);int n;int primecount=0,i,j;cout=2 as upper limit for prime numbers:;cin n;Aprimecount+=2;/2是一个质数,for(i=3;i i/2)Aprimecount+=i;for(i=0;i primecount;i+)cout setw(5)Ai;if(i+1)%10=0)cout endl;cout endl;,12,链表,链表是一种动态数据结构,可以用来表示顺序访问的线性群体。链表是由系列结点组成的,结点可以在运行时动态生成。每一个结点包括数据域和指向链表中下一个结点的指针(即下一个
5、结点的地址)。如果链表每个结点中只有一个指向后继结点的指针,则该链表称为单链表。,顺序访问线性群体,13,单链表,顺序访问线性群体,14,例9-3 单链表的结点类模板,template class Node private:Node*next;public:T data;Node(const T/实现略,顺序访问线性群体,15,在结点p之后插入一个结点,顺序访问线性群体,data1,p,q,data,16,删除p结点之后的结点,顺序访问线性群体,data1,p,q,17,链表的基本操作,生成结点输出链表查找结点插入结点删除结点清空链表,顺序访问线性群体,18,例9-4 实现链表操作函数,#if
6、ndef NODE_LIBRARY#define NODE_LIBRARY#include#include#include 9_3.h,顺序访问线性群体,/生成节点template Node*GetNode(const T,enum AppendNewline noNewline,addNewline;/输出链表template void PrintList(Node*head,AppendNewline addnl=noNewline)Node*currPtr=head;while(currPtr!=NULL)if(addnl=addNewline)cout data data NextNo
7、de();,/查找节点template int Find(Node*head,T,/在表头插入节点template void InsertFront(Node*,/删除链表的第一个节点template void DeleteFront(Node*,/删除链表中第一个数据域等于key的节点template void Delete(Node*,/在有序链表中插入一个节点template void InsertOrder(Node*,/清空链表-删除链表中的所有节点template void ClearList(Node*#endif/NODE_LIBRARY,27,例9.5 链表应用举例,从键盘输
8、入10个整数,用这些整数值作为结点数据,生成一个链表,按顺序输出链表中结点的数值。然后从键盘输入一个待查找整数,在链表中查找该整数,若找到则删除该整数所在的结点(如果出现多次,全部删除),然后输出删除结点以后的链表。在程序结束之前清空链表。9-5.cpp,顺序访问线性群体,#include#include 9_3.h#include 9_4.hvoid main(void)Node*head=NULL,*prevPtr,*delPtr;int i,key,item;for(i=0;i item;InsertFront(head,item);cout List:;PrintList(head,n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第九 群体
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5661504.html