数据结构:链队列的基本操作及应用

该实验旨在帮助学生理解链队列的结构特性,并通过C++实现链队列的基本操作,如初始化、销毁、入队、出队等。实验内容包括创建菜单驱动的链队列操作,测试队列的“先入先出”特性,以及在不同状态下的边界条件处理。
摘要由CSDN通过智能技术生成

链队列的基本操作及应用

实验目的
通过该实验,使学生理解链队列的构造特点并灵活应用,掌握链队基本操作的编程实现,认识栈是在一端进行插入,在另一端进行删除集中操作的线性结构,掌握队列的“先入先出”操作特点,知道判断队列空和满的条件,进一步熟悉C语言中指针操作。
实验内容
用链式存储结构,实现教材定义的队列的基本操作。
参考界面
菜单中包括以下功能:
1.初始化队列,
2.销毁队列,
3.清空队列,
4队列判空,
5.求队列长度,
6.获取队头元素,
7.插入一个 元素,
8.删除一个元素,
9输出所有元素。
要求:
自定义的函数中不允许出现提示语和输出语句。
验收/测试用例
通过菜单调用各个操作,测试点:

  • 没有初始化前进行其他操作,程序是否能控制住;
  • 初始化一个队列;
  • 判队列空,屏幕显示队列为空;
  • 3个数入队, 3、5、7;
  • 队头长度,屏幕输出3;
  • 取队头元素,再判队列是否空,然后再判队列长度,(让学生知道取队头元素不改变队列中的内容,队头指针不发生改变);
  • 出队,再判队列长度和显示队列中剩余的元素;(多次出队,队列为空之后再执行出队操作,是否提示队列为空);
  • 入队一个元素2,再出队,再判断队列是否为空,(主要测试出队操作中特殊情况下的那两行代码是否写了);
  • 销毁队,再做其他操作,判断程序是否能控制。
    主要代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define OK 1
#define ERROR 0
#define OVERFLOW -2
//--------------队列的链式存储表示------------------- 
typedef int status;     //status是函数的类型,其值是函数结果状态代码。
typedef int QElem;     //自定义

/*
该结构体为一个节点所含内容
data:数据域
*next:指针域 
*/
typedef struct QNode{
   
	QElem data;
	struct QNode *next;
}QNode,*Queue;
/*
队列很显然需要两个指针,一个队头指针,一个队尾指针
front:队头指针,初始为NULL 
rear:队尾指针
*/
typedef struct {
   
	Queue front;
	Queue rear;
}LQueue;

//---------------基本操作的函数原型说明------------ 
status InitQueue(LQueue &Q);
       //构造一个空队列Q
status DestroyQueue(LQueue &Q);
       //销毁队列Q 
status ClearQueue(LQueue &Q);
       //清空队列Q 
status QueueEmpty(LQueue Q);
       //判空 
int QueueLength(LQueue Q);
       //求长度 
status GetHead(LQueue Q,QElem &e);
       //获取队头元素,并用e返回其值 
status EnQueue(LQueue &Q,QElem e);
       //插入元素e为Q的新的队尾元素 
status DeQueue(LQueue &Q,QElem &e);
       //删除Q的队头元素,并用e返回其值 

//---------------主函数---------------------------- 
int main(){
   
	int i;
	LQueue Q = {
   NULL,NULL};
	QElem e = 0;
	
	int choice;
	while (1){
   
		//菜单
		printf("\t\t\t 1---初始化一个队列\n");
		printf("\t\t\t 2---销毁队列\n");
		printf("\t\t\t 3---清空队列\n");
		printf("\t\t\t 4---判断队列是否为空\n");
		printf("\t\t\t 5---求队列长度\n");
		printf("\t\t\t 6---获取队头元素\n");
		printf("\t\t\t 7---插入一个元素\n");
		p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值