实验三 队列
本次继续更新数据结构与算法这门课的上机实验,主要涉及队列这一数据结构的基本操作,本次实验相对较简单。
对于想要获取此实验报告和源代码的同学,欢迎光顾小生寒舍 GitHub:https://github.com/Charmve
特此感谢, 实验过程中邓老师的指导和帮助!
实验内容:
一、参考教材,编写队列的相关程序(定义,初始化,赋值,入队,出队等等)
二、编写队列的结构体,实现队列的入队、出队操作。。
三、撰写实验报告。
备注:本次实验重点在于结构体的设计和指针的操作。
测试环境:Win 10, Visual C++ 6.0
附件:源代码
#include "iostream.h"
#include "stdlib.h"
#include "stdio.h"
#define ElemType int
#define Status bool
#define OK true
#define OVERFLOW 1
#define ERROR false
typedef struct QNode{
ElemType data;
QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
Status InitQueue(LinkQueue &Q) {
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if (!Q.front)
exit(OVERFLOW);
Q.front->next=NULL;
return OK;
}
Status QueueEmpty(LinkQueue Q){
if(Q.front==Q.rear)
return OK;
else
return ERROR;
}
Status EnQueue(LinkQueue &Q,ElemType e) {//入队
QueuePtr p;
p = (QueuePtr)malloc(sizeof(QNode));
if(!p)
exit(OVERFLOW);
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return OK;
}
Status DeQueue(LinkQueue &Q,ElemType &e) {//出队
if(Q.front==Q.rear)
return ERROR;
QueuePtr p;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
free(p);
if(Q.rear==p)
Q.rear=Q.front;
return OK;
}
void myprint(LinkQueue &Q){
//输出队列中的元素
//if(QueueEmpty(Q)) return;
ElemType e;
while(!QueueEmpty(Q)){
DeQueue(Q,e);
printf("%c",e+48);
}
}
void main()
{
LinkQueue Q;
ElemType i=0;
char ch;
if(!InitQueue(Q)) return;
do{
scanf("%c",&ch);
EnQueue(Q,ch-48); //转化为整形入栈
}while(ch != '\n');
//cout<<Q.length<<endl;
myprint(Q);
}
上一篇:数据结构与算法上机实验二 链表
欢迎各位订阅我,谢谢大家的点赞和专注!我会继续给大家分享我大学期间详细的实践项目。
知识星球
专为求职面试中算法与数据结构的小伙伴,创了学习交流/刷题群(知识星球)!想要最快的提升算法与数据结构技能,和更多小伙伴一起来吧!
进群获取互联网大厂高频coding题库,告别刷题400道,分类整理的题库,算法思路和源代码实现配套,各个类型总结出来的解题模板,远比你一个人要强!
MaiweiAI-com | WeChat ID: Yida_Zhang2
机器学习+计算机视觉