数据结构04队列的基本操作Word格式文档下载.docx

上传人:b****5 文档编号:16647605 上传时间:2022-11-25 格式:DOCX 页数:14 大小:94.05KB
下载 相关 举报
数据结构04队列的基本操作Word格式文档下载.docx_第1页
第1页 / 共14页
数据结构04队列的基本操作Word格式文档下载.docx_第2页
第2页 / 共14页
数据结构04队列的基本操作Word格式文档下载.docx_第3页
第3页 / 共14页
数据结构04队列的基本操作Word格式文档下载.docx_第4页
第4页 / 共14页
数据结构04队列的基本操作Word格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据结构04队列的基本操作Word格式文档下载.docx

《数据结构04队列的基本操作Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构04队列的基本操作Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。

数据结构04队列的基本操作Word格式文档下载.docx

结构关系:

R={<

ai,ai+1>

|ai,ai+1∈D}

基本操作:

InitQueue(LinkQueue*Q)

操作前提:

Q是一个未初始化的链接队列

操作结果:

将Q初始化为一个空的链接队列

EnQueue(LinkQueue*Q,QElemTypee)

链接队列Q已存在

将元素e插入到链接队列中

DeQueue(LinkQueue*Q,QElemType*e)

将链接队列Q中队头元素删除,删除的元素值通过e返回

0utputQueue(LinkQueueQ)

操作结果:

将链接队列Q中的元素显示到屏幕上

}

 

本程序包含5个函数:

•主函数main()

•初始化链接队列函数InitQueue()

•进队函数EnQueue()

•出队函数DeQueue()

•输出队列中元素函数OutputStack()

各函数调用关系:

主函数main调用其他四个函数

主函数的伪码

main()

{

定义变量i,n,m;

定义一个LinkQueue变量Lq

初始化Lq;

输入队列元素的个数;

For循环(i=1;

i<

=n;

i++)

{调用EnQueue函数;

输出队列中元素;

调用DeQueue函数;

显示删除的队头元素;

显示Lq;

(2)环形队列

ADTSqQueue{

InitQueue(SqQueue&

Q)

Q是一个未初始化的环型队列

将Q初始化为一个空的环型队列

EnQueue(SqQueue*Q,inte)

环型队列Q已存在

将元素e插入到队列中

DeQueue(SqQueue*Q,int*e)

将环型队列Q中队头元素删除,删除的元素值通过e返回

outPutQMeue(SqQueue*Q)

将环型队列Q中的元素显示到屏幕上

本程序包含5个函数:

函数的伪码

{定义SqQueue变量sq;

定义整型变量n,i,m;

构造空的环型队列;

输入队列的长度;

For循环(i=1;

输出队列元素;

删除对头元素;

4.详细设计

(1)类型定义

typedefstructQNode{

intdata;

structQNode*next;

}QNode,*QueuePtr;

typedefstruct{

QueuePtrfront;

QueuePtrrear;

}LinkQueue;

基本操作的伪码算法

(1)初始化

voidInitQueue(LinkQueue*Q){

Q->

front=Q->

rear==申请新结点;

Q->

front->

next=NULL;

(2)进队

voidPush(SqStack&

S,inte)

定义QueuePtr变量p;

p=申请新的空间;

如果申请失败,结束程序

p->

data=e;

如果是第一个元素则{Q->

next=p;

rear->

rear=p;

(3)出队

intPop(SqStack*S,inte)

如果队空则返回0;

p=Q->

next;

*e=p->

data;

next=p->

如果Q->

rear==p则Q->

rear=Q->

front;

释放p的空间;

返回1;

(4)输出元素

intOutputQueue(LinkQueueQ)

p=Q.front->

while(p)

{

printf("

%d"

p->

data);

p=p->

}

\n"

);

返回1;

类型定义

typedefstruct{

int*base;

intfront;

intrear;

}SqQueue;

voidInitQueue(SqQueue&

Q){

Q.base=申请新的空间;

如果申请失败,结束程序;

Q.front=Q.rear=0;

intEnQueue(SqQueue*Q,inte)

{如果队满了则返回1;

base[Q->

rear]=e;

rear=(Q->

rear+1)%MAXQSIZE;

返回0;

出队

intDeQueue(SqQueue*Q,int*e)DeQueue(SqQueue*Q,int*e)

如果队空则返回1;

*e=Q->

front];

front=(Q->

front+1)%MAXQSIZE;

voidoutPutQMeue(SqQueue*Q)

{

定义整型变量i;

For循环(i=Q->

rear;

{输出Q->

base[i];

换行;

5.调试分析

调试是出现错误,经过检查发现在某些地方分号用中文表示,出现空指针问题。

出现空指针问题,内存不能读取等

6.使用说明

(1)链接队列:

程序执行过程如下:

提示用户输入元素个数;

用户按要求输入一个整型数;

程序输出构造好的链接队列;

调用出队函数,并把剩余元素显示在屏幕上;

(2)环型队列:

提示用户输入队列元素个数;

程序用输入的整型数构建一个环型队列,并输出队列元素;

调用出栈函数,删除栈顶,显示栈中元素;

7.测试结果

构造一个空的链接队列后,屏幕显示:

请输入队列的元素个数:

输入5后,

屏幕显示建立的队列元素:

12345

调用出队函数后,屏幕显示:

2345

建立空队列,程序运行后屏幕显示:

输入队列元素的长度

屏幕显示队列的元素:

接着屏幕又显示:

队列中的第一个元素为:

1

调用出队函数,然后输入队列中元素:

8.参考文献

  数据结构(c语言版)

9.附录

源程序文件如下:

#include<

stdlib.h>

stdio.h>

typedefstructQNode{

intdata;

structQNode*next;

}QNode,*QueuePtr;

typedefstruct{

QueuePtrfront;

QueuePtrrear;

}LinkQueue;

voidInitQueue(LinkQueue*Q)

rear=(QNode*)malloc(sizeof(QNode));

voidEnQueue(LinkQueue*Q,inte)

QueuePtrp;

p=(QueuePtr)malloc(sizeof(QNode));

if(!

p)exit

(1);

p->

if(Q->

next==NULL)

{Q->

Q->

intDeQueue(LinkQueue*Q,int*e)

front==Q->

rear)return0;

p=Q->

*e=p->

rear==p){Q->

free(p);

return1;

intOutputQueue(LinkQueueQ)

if(Q.front==Q.rear)return0;

p=Q.front->

while(p)

{

printf("

p=p->

}

voidmain()

{inti,n;

intm;

LinkQueueLq;

构造一个空的链接队列"

InitQueue(&

Lq);

\n请输入队列的元素个数:

"

scanf("

%d"

&

n);

for(i=1;

EnQueue(&

Lq,i);

队列中的元素为:

OutputQueue(Lq);

DeQueue(&

Lq,&

m);

删除队列中的第一个元素\n此时队列中的元素为:

#defineMAXQSIZE100

typedefstruct{

int*base;

intfront;

intrear;

}SqQueue;

voidInitQueue(SqQueue&

Q.base=(int*)malloc(MAXQSIZE*sizeof(int));

Q.base)exit

(1);

Q.front=Q.rear=0;

intEnQueue(SqQueue*Q,inte)

if((Q->

rear+1)%MAXQSIZE==Q->

front)return1;

return0;

intDeQueue(SqQueue*Q,int*e)

rear)return1;

*e=Q->

voidoutPutQMeue(SqQueue*Q)

inti;

for(i=Q->

printf("

Q->

base[i]);

SqQueuesq;

intn,i,m;

构造空的环型队列\n"

InitQueue(sq);

请输入队列的长度:

sq,i);

队列的元素为:

outPutQMeue(&

sq);

DeQueue(&

sq,&

队列中的第一个元素为:

m);

\n删除对头元素,输出队列元素:

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

当前位置:首页 > 小学教育 > 语文

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

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