实验5、链队列的基本操作
实验要求:
(1)实验目的
通过该实验,使学生理解链队列的构造特点并灵活应用,掌握链队基本操作的编程实现,认识栈是在一端进行插入,在另一端进行删除集中操作的线性结构,掌握队列的“先入先出”操作特点,知道判断队列空和满的条件,进一步熟悉C语言中指针操作。
(2)实验内容
用链式存储结构,实现教材定义的队列的基本操作。
(3)参考界面
菜单中包括以下功能:
1.初始化队列,2.销毁队列,3.清空队列,4. 队列判空,5.求队列长度,6.获取队头元素,7.插入一个 元素,8.删除一个元素,9输出所有元素。
要求:自定义的函数中不允许出现提示语和输出语句。
(4)验收/测试用例
通过菜单调用各个操作,测试点:
没有初始化前进行其他操作,程序是否能控制住;
初始化一个队列;
判队列空,屏幕显示队列为空;
3个数入队, 3、5、7;
队头长度,屏幕输出3;
取队头元素,再判队列是否空,然后再判队列长度,(让学生知道取队头元素不改变队列中的内容,队头指针不发生改变);
出队,再判队列长度和显示队列中剩余的元素;(多次出队,队列为空之后再执行出队操作,是否提示队列为空);
入队一个元素2,再出队,再判断队列是否为空,(主要测试出队操作中特殊情况下的那两行代码是否写了);
销毁队,再做其他操作,判断程序是否能控制。
*交互性做的并不是很完善,但是基本的菜单功能均可实现,一些代表性操作参照严蔚敏数据结构一书,以下仅供参考=====*
一、链队列
#include<iostream>
#include<stdlib.h>
using namespace std;
#define OVERFLOW -1
int exist=0; //判断初始化
typedef int QElemType;
//定义队列结构体
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode, *QueuePtr;
//定义队头队尾指针
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
//构造空队列
void InitQueue(LinkQueue &Q){
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front) exit(OVERFLOW);
Q.front->next=NULL;
}
//销毁队列
void DestroyQueue(LinkQueue &Q){
while(Q.front){
Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}
}
//清空队列
void ClearQueue(LinkQueue &Q){
QueuePtr p,q;
Q.rear=Q.front;
p=Q.front->next;
Q.front->next=NULL;
while(p){
q=p;
p=p->next;
free(q);
}
}
//队列判空
void QueueEmpty(LinkQueue &Q){
if(Q.front==Q.rear) cout<<"队列为空!"<<endl;
else cout<<"队列不空!"<<endl;
}
//求队列长度
int QueueLength(LinkQueue &Q){
QueuePtr p;
int i;
for(i=0,p=Q.front->next;p;p=p->next,++i);
return i;
}
//获取队头元素
int GetHead(LinkQueue &Q){
int e;
if(Q.front==Q.rear){
cout<<"队列为空!"<<endl;
exit(0);
}
else e=Q.front->next->data;
return e;
}
//插入一个元素
void EnQueue(LinkQueue &Q,int e){
QueuePtr p=
文章浏览阅读41次。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data;using System.Data.SqlClient;namespace DAL{ public class DBHelper ..._完整的dbhelper类
文章浏览阅读490次。格式:按钮组件不支持着色,所以colorAccent主题色在项目中没有效果。_android权威编程指南第三版笔记
文章浏览阅读945次。背景微信小程序的测试发布在没有 CI/CD 等相关工具的情况下,存在着如下的问题:小程序开发助手中,同一个开发者只能显示一个开发版本测试同事、产品经理、UI设计师找开发要二维码,或者本地拉取代码后使用开发者工具打开,不方便且效率较低本地生成的二维码会出现携带本地代码、未及时拉取分支其他改动等问题为了避免如上问题的发生,采用微信小程序集成 Jenkins 的方案。想达到一个效果,开发人员只管往前写代码,提交代码,修改bug。而测试人员就通过jenkins自动打包和部署进行测试开发人员所做的功能和回归_win2012如何配置小程序?
文章浏览阅读1k次。#if defined(__X86_64__) || defined(__X86_64) || defined(__amd_64) || defined(__amd_64__)_gcc查看64 32位
文章浏览阅读268次。二进制中1的个数题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。问题分析:将数字转换成二进制数字,如果是直接求的话,注意数组反转,反转之后,若不够32位进行补零负数的补码: 求出绝对值的原码,从最后一个数字开始往前数,到第一个1之后把前面的全部取反代码展示:function NumberOf1(n){ //还可以使用二进制转换来减少代码量 num.toString(2) var nums = []; var num = 0; _js 二进制中1的个数
文章浏览阅读468次。Drawable资源是对图像的一个抽象,你可以通过getDrawable(int)得到并绘制到屏幕上。这里有几种不同类型的Drawable: Bitmap File 一个Bitmap图像文件(.png、.jpg或.gif)。BitmapDrawable。 Nine-Patch File 一个带有伸缩区域的PNG文件,可以基于content伸缩图片(.9.png)_drawable 资源
文章浏览阅读2.2w次,点赞9次,收藏13次。基本概念看socketio官方文档 http://socket.io/docs/rooms-and-namespaces/namespace 和room的概念其实用来同一个服务端socket多路复用的。namespace,room和socketio的关系如下。socket会属于某一个room,如果没有指定,那么会有一个default的room。这个room又会属于某个namespace,_socketio 房间概念
文章浏览阅读6.5k次。一、动态增删行在 ext 表格中,动态添加行主要和表格绑定的 store 有关,通过对 store 数据集进行添加或删除,就能实现表格行的动态添加删除。 (1) 动态添加表格的行 gridStore.add({}); (2) 动态删除表格的行 gridStore.removeAt(gridStore.count() - 1); 二、动态增删列在 ext_extjs 表格删除一列
文章浏览阅读211次。2021 年 2 月 5 日星期五,想喝奶茶的一天。想要 coco 今日推出的奶茶包,可惜要 88 赞。废话少说,进入正题。1 凸集与凸函数1.1 仿射集与凸集-1定义 1.1.1 若集合 W⊆RnW\subseteq\mathbb{R}^nW⊆Rn 中任意两个不同元素对于加法和数乘皆是封闭的,即任取 x1,x2∈Wx_1,x_2\in Wx1,x2∈W,λ1,λ2∈R\lambda_1,\lambda_2\in\mathbb{R}λ1,λ2∈R 皆有λ1x1+λ2x2∈W,\lambd_仿射集为相对开集
文章浏览阅读328次。前提:分析mysql性能的时候会查看数据库的哪些sql语句有问题,效率低。这就用到了数据库的慢查询,作用就是: 它能记录下所有执行超过long_query_time时间的SQL语句,帮你找到执行慢的SQL,方便我们对这些SQL进行优化。1.配置慢查询在mysql客户端执行mysql> show variables like "%query%" ;得到结果:设置慢查询.png涉及参数解释:sl..._mysqldumpslow /var/lib/mysql/slow.log
文章浏览阅读3.6k次。--2018-4-26 更新一般情况下,小版本的更新直接使用app store 进行更新就行。主要是参照tonymacx86 。这里记一下一些相关问题。如果NVIDIA 官方 驱动没有更新,可以用下面的脚本进行打补丁bash <(curl -s https://raw.githubusercontent.com/Benjamin-Dobell/nvidia-update/master/nvi...
文章浏览阅读844次。1. 需求 将生产环境的流量拷贝到预上线环境或测试环境,这样做有很多好处,比如:可以验证功能是否正常,以及服务的性能;用真实有效的流量请求去验证,又不用造数据,不影响线上正常访问;这跟灰度发布还不太一样,镜像流量不会影响真实流量;可以用来排查线上问题;重构,假如服务做了重构,这也是一种测试方式;为了实现流量拷贝,Nginx提供了ngx_http_mirror_modu..._nginx x-origin-uri