您的位置:逆风者 数据结构 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:119 来源:未知

本文章共1823字,分2页,当前第1页,快速翻页:
 

教学目的: 掌握队列的类型定义,掌握链队列的表示与实现方法

教学重点: 链队列的表示与实现

教学难点: 链队列的表示与实现

授课内容:

逆风编程精品

一、队列的定义:

队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素。象日常生活中的排队,最早入队的最早离开。

在队列中,允许插入的的一端叫队尾,允许删除的一端则称为队头。

抽象数据类型队列:

ADT Queue{

数据对象: D={ai| ai(-ElemSet,i=1,2,...,n,n>=0}

数据关系: R1={<ai-1,ai> | ai-1,ai(- D,i=2,...,n}

基本操作:

InitQueue(&Q) 构造一个空队列Q

Destroyqueue(&Q) 队列Q存在则销毁Q

ClearQueue(&Q) 队列Q存在则将Q清为空队列

QueueEmpty(Q) 队列Q存在,若Q为空队列则返回TRUE,否则返回FALSE

QueueLenght(Q) 队列Q存在,返回Q的元素个数,即队列的长度

GetHead(Q,&e) Q为非空队列,用e返回Q的队头元素

EnQueue(&Q,e) 队列Q存在,插入元素e为Q的队尾元素

DeQueue(&Q,&e) Q为非空队列,删除Q的队头元素,并用e返回其值

QueueTraverse(Q,vivsit()) Q存在且非空,从队头到队尾,依次对Q的每个数据元素调用函数visit()。一旦visit()失败,则操作失败

}ADT Queue

二、链队列-队列的链式表示和实现

用链表表示的队列简称为链队列。一个链队列显然需要两个分别指示队头和队尾的指针

Q.front ->
|
\|/
1
|
队头
\|/
2
|
\|/
3
|

\|/

\|/

Q.rear ->
9
/\
队尾
Q.front ->
|
\|/
1
|
队头
\|/
2
|
\|/
3
|

\|/

\|/

Q.rear ->
9
/\
队尾

链队列表示和实现:

//存储表示

typedef struct QNode{

QElemType data;

struct QNode *next;

}QNode,*QueuePtr;

typedef struct{

QueuePtr front;

QueuePtr rear;

}LinkQueue;

//操作说明

Status InitQueue(LinkQueue &Q)

//构造一个空队列Q

Status Destroyqueue(LinkQueue &Q)

//队列Q存在则销毁Q

Status ClearQueue(LinkQueue &Q)

//队列Q存在则将Q清为空队列

Status QueueEmpty(LinkQueue Q)

// 队列Q存在,若Q为空队列则返回TRUE,否则返回FALSE

Status QueueLenght(LinkQueue Q)

// 队列Q存在,返回Q的元素个数,即队列的长度

Status GetHead(LinkQueue Q,QElemType &e)

//Q为非空队列,用e返回Q的队头元素

Status EnQueue(LinkQueue &Q,QElemType e)

//队列Q存在,插入元素e为Q的队尾元素

Status DeQueue(LinkQueue &Q,QElemType &e)

//Q为非空队列,删除Q的队头元素,并用e返回其值

Status QueueTraverse(LinkQueue Q,QElemType vivsit())

//Q存在且非空,从队头到队尾,依次对Q的每个数据元素调用函数visit()。一旦visit()失败,则操作失败

//操作的实现

Status InitQueue(LinkQueue &Q) {

//构造一个空队列Q

Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));

if(!Q.front)exit(OVERFLOW);

Q.front->next=NULL;

return OK;}

Status Destroyqueue(LinkQueue &Q) {

//队列Q存在则销毁Q

while(Q.front){

Q.rear=Q.front->next;

free(Q.front);

Q.front=Q.rear;
 

本文章更多内容1 - 2 - 下一页>>
相关文章

数据结构教程 第四课 算法效率的度量和存储
数据结构教程 第二十七课 实验六 二叉树实验
数据结构教程 第十九课 实验四 串的实现实验
数据结构教程 第三十五课 实验七 查找
数据结构教程 第三课 算法及算法设计要求
数据结构教程 第九课 循环链表与双向链表
数据结构教程 第二十九课 静态查找表(一)
C语言完成一个学生成绩管理程序
数据结构教程 第二十三课 二叉树的存储结构
数据结构教程 第十四课 串的定义
数据结构教程 第三十九课 索引文件
五子棋算法
数据结构教程 第一课 数据结构的基本概念和
数据结构教程 第三十三课 哈希表(二)
数据结构教程 第十七课 实验三:栈的表示与
数据结构教程 第八课 线性表的链式表示与实

相关评论


本文章所属分类:首页 数据结构

  热门关键字: