把我的 C 作业贴出来 实验二 栈和队列 ——2

栈和队列实验:循环队列操作算法
该博客围绕栈和队列实验展开,目的是熟悉其存储结构、掌握基本运算并完成应用运算。实验内容聚焦于以数组存放循环队列元素,给出了循环队列的结构类型定义,编写了入队和出队操作的算法,包含主程序及相关函数实现。

实验二 栈和队列

一、 实验目的

1.熟悉栈和队列的顺序和链式存储结构

2.掌握栈和队列的基本运算

3.能够利用栈和队列的基本运算完成栈和队列应用的运算

二、 实验内容

2.假设以数组sequ[m]存放循环队列的元素,同时设变量rearquelen 分别指示循环队列中队尾元素的位置和内含元素的个数。编写实现该循环队列的入队和出队操作的算法。提示:队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。(文件夹:习题10_9

/*循环队列的结构类型定义.h*/

#define m 5

typedef int datatype;

typedef struct

{ datatype sequ[m];

int rear, quelen;

}qu;

/*循环队列入队出队的主程序文件.cpp*/

#include <stdio.h>

#include<stdlib.h>

#include"循环队列的结构类型定义.h"

#include"置空队.h"

#include"入队.h"

#include"出队.h"

int main()

{ qu *sq;

datatype x, *p;

int key;

/*sq=new qu;*/

sq = (qu*)malloc(sizeof(qu));

setnull(sq);

do

{ /*cout<<"1.Enter Queue 2.Delete Queue -1.Quit:";

cin>>key;

*/

puts("1.Enter Queue 2.Delete Queue -1.Quit:");

scanf("%d",&key);

switch(key)

{ case 1: /*cout<<"Enter the Data:"; cin>>x;*/

puts("Enter the Data:");scanf("%d",&x);

enqueue(sq,x); break;

case 2: p=dequeue(sq);

if(p!=NULL) /*cout<<*p<<endl;*/

printf("%d/n",*p);

break;

case -1: exit(0);

}

}while(1);

return 0;

}

/*该程序输入非数字时将出错*/

/*置空队.h*/

void setnull(qu *sq)

{ sq->rear=m-1;

sq->quelen=0;

}

void enqueue( qu * sq,datatype x)

{

if(sq->quelen==m)

{

printf("队满,入队失败./n");

return;

}

sq->rear=(sq->rear+1)%m;

sq->sequ[sq->rear]=x;

sq->quelen++;

return;

}

datatype* dequeue(qu* sq)

{

datatype *x;

x=(datatype*)malloc(sizeof(datatype));

if(sq->quelen==0)

{

printf("队空,出队失败./n");

return 0;

}

*x=sq->sequ[(sq->rear-sq->quelen+1+m)%m];

sq->quelen--;

return x;

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值