- 1、本文档共69页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3第3章限定性线性表mdash;mdash;栈和队列
尾递归 尾递归是指递归调用语句只有一个,而且是处于算法的最后,尾递归是单向递归的特例。 求n!非递归算法 : long Fact (int n) { int fac=1; for(int i=1;i=n;i++) /*依次计算f(1)… f(n)*/ fac=fac* i; /* f(i)= f(i-1)*i */ return fac; } * 3.2 队列 3.2.1 队列的定义 3.2.2 队列的表示和实现 3.2.3 队列的应用举例 返回主目录 * 3.2.1 队列的定义 队列 : 是另一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出的特性。 在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front)。 队列的抽象数据类型定义: ADT Queue 数据元素:可以是任意类型的数据,但必须属于同一个数据对象。 关系:队列中数据元素之间是线性关系。 * 基本操作: 1) InitQueue(Q):初始化操作 2) IsEmpty(Q):判空操作 3) IsFull(Q):判满操作 4) EnterQueue(Q,x):进队操作 5) DeleteQueue(Q,x):出队操作 6) GetHead(Q,x):取队头元素操作 7) ClearQueue(Q):队列置空操作 8) DestroyQueue(Q): 队列销毁操作 * 3.2.2 队列的表示和实现 队列的两种存储表示,顺序表示和链式表示。 1.链队列 :用链表表示的队列简称为链队列。 队尾指针rear 队头指针front 空的链队列 front a1 ··· a1 ∧ rear 非空的链队列 * typedef struct Node { QueueElementType data; /*数据域*/ struct Node *next; /*指针域*/ }LinkQueueNode; ? typedef struct { LinkQueueNode * front; LinkQueueNode * rear; }LinkQueue; 链队列可以定义如下: * 链队列的基本操作 : (1) 初始化操作 int InitQueue(LinkQueue * Q) { /* 将Q初始化为一个空的链队列 */ Q-front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode)); if(Q-front!=NULL) { Q-rear=Q-front; Q-front-next=NULL; return(TRUE); } else return(FALSE); /* 溢出!*/ } * (2) 入队操作 int EnterQueue(LinkQueue *Q, QueueElementType x) { /* 将数据元素x插入到队列Q中 */ LinkQueueNode * NewNode; NewNode=(LinkQueueNode * )malloc(sizeof(LinkQueueNode)); if(NewNode!=NULL) { NewNode-data=x; NewNode-next=NULL; Q-rear-next=NewNode; Q-rear=NewNode; return(TRUE); } else return(FALSE); /* 溢出!*/ } * (3) 出队操作 int DeleteQueue(LinkQueue * Q, QueueElementType *x) { /* 将队列Q的队头元素出队,并存放到x所指的存储空间中 */ LinkQueueNode * p; if(Q-front==Q-rear) return(FALSE); p=Q-front-next; Q-front-next=p-next; /* 队头元素p出队 */ if(Q-rear==p) /* 如果队中只有一个元素p,则p出队后成为空队 */ Q-rear=Q-front; *x=p-data; free(p); /*
您可能关注的文档
- 队列和数组.ppt
- 信息系统模型.ppt
- 营销3 客户进店销售技巧.ppt
- 关于3 电波传播与传播预测模型.ppt
- )3原料-天然原料.ppt
- -2公开密钥体制ecc.ppt
- -2水的电离 溶液的pH(理1)1.ppt
- -4周期信号和抽样信号的傅里叶变换.ppt
- -4绿色植物是生物圈中有机物的制造者.ppt
- -6想象思维、直觉思维、灵感思维.ppt
- 2025年一级建造师考试《水利水电工程管理与实务》冲刺必刷卷.docx
- 2025年一级建造师考试《水利水电工程管理与实务》逆袭破题卷1.docx
- 2025年一级建造师考试《市政工程管理与实务》冲刺必刷卷 .docx
- 2025年一级造价工程师考试《建设工程计价》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价管理》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价案例分析(安装专业)》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价案例分析(土建专业)》预习卷.docx
- 2025年中级会计考试《会计实务》冲刺提分卷.docx
- 2025年中级会计考试《财务管理》冲刺提分卷.docx
- 2025年中级会计考试《财务管理》全真模拟卷.docx
文档评论(0)