C语言数据结构-队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作
1、数据结构-队列的实现-C语言
//队列的存储结构
#define MAXSIZE 100
typedef struct
{
int* base; //基地址
int _front; //头指针
int _rear; //尾指针
} SqQueue;
//构造空队列---1
void InitQueue(SqQueue* Q);
//队列的销毁---2
void DestroyQueue(SqQueue* Q);
//队列的清空---3
void ClearQueue(SqQueue* Q);
//判断队列是否为空---4
void QueueEmpty(SqQueue Q);
//队列的长度---5
int QueueLength(SqQueue Q);
//取队列头元素---6
void GetHead(SqQueue Q);
//插入---7
void EnQueue(SqQueue* Q, int value);
//删除---8
void DeQueue(SqQueue* Q,int* value);
//依次访问队列元素---9
void QueueTraverse(SqQueue Q);
//------------------------------------------------
void ShowHelp()
{
printf("1---初始化队列\n");
printf("2---销毁队列\n");
printf("3---清空队列\n");
printf("4---判断队列是否为空\n");
printf("5---队列长度\n");
printf("6---队列头元素\n");
printf("7---插入\n");
printf("8---删除\n");
printf("9---依次访问队列元素\n");
}
void InitQueue(SqQueue* Q)
{
Q->base = (SqQueue*) malloc(MAXSIZE*sizeof(SqQueue));
if(!Q->base)
{
printf("分配失败.\n");
return;
}
Q->_rear = 0;
Q->_front = 0;
}
void DestroyQueue(SqQueue* Q)
{
free(Q->base);
Q->_rear = 0;
Q->_front = 0;
}
void ClearQueue(SqQueue* Q)
{
//并不需要free占值的空间,因为就是不free,本身分配的也有空间。都是占着的。
Q->_rear = 0;
Q->_front = 0;
}
void QueueEmpty(SqQueue Q)
{
if(Q._rear == Q._front)
printf("此队列为空。\n");
else
printf("此队列不为空。\n");
}
int QueueLength(SqQueue Q)
{
return Q._rear;
}
void GetHead(SqQueue Q)
{
if(Q._rear == Q._front)
{
printf("此队列为空。\n");
return;
}
int* middle = Q.base;
middle += Q._front;
printf("此队列头元素为%d。\n",*middle);
}
void EnQueue(SqQueue* Q, int value)
{
if(Q->_rear == MAXSIZE)
{
printf("要假溢出,不能再继续添加.\n");
return;
}
int* middle = Q->base;
middle += Q->_rear;
*(middle) = value;
Q->_rear ++;
printf("插入成功\n");
}
void DeQueue(SqQueue* Q,int* value)
{
if(Q->_rear == Q->_front)
{
printf("队列中无元素,不能再进行出队列操作.\n");
return;
}
int* middle = Q->base;
middle += Q->_front;
*value = *(middle);
Q->_front ++;
printf("删除成功\n");
}
void QueueTraverse(SqQueue Q)
{
if(Q._rear == Q._front){
printf("此队列为空。\n");
return;
}
int* middle = Q.base;
int num = 1;
for(int i=Q._front;i<Q._rear;i++){
printf("第%d个元素值为:%d\n",num,*(middle+i));
num++;
}
}
C语言数据结构-队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作的更多相关文章
- SDUT OJ 数据结构实验之链表七:单链表中重复元素的删除
数据结构实验之链表七:单链表中重复元素的删除 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem ...
- SDUT-2122_数据结构实验之链表七:单链表中重复元素的删除
数据结构实验之链表七:单链表中重复元素的删除 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 按照数据输入的相反顺序(逆 ...
- C语言数据结构-链式栈的实现-初始化、销毁、长度、取栈顶元素、查找、入栈、出栈、显示操作
1.数据结构-链式栈的实现-C语言 //链式栈的链式结构 typedef struct StackNode { int data; struct StackNode *next; } StackNod ...
- C语言数据结构-栈的实现-初始化、销毁、长度、取栈顶元素、查找、入栈、出栈、显示操作
1.数据结构-栈的实现-C语言 #define MAXSIZE 100 //栈的存储结构 typedef struct { int* base; //栈底指针 int* top; //栈顶指针 int ...
- 数据结构实验之链表七:单链表中重复元素的删除(SDUT 2122)
#include <bits/stdc++.h> using namespace std; typedef struct node { int data; struct node* nex ...
- C语言数据结构-链式队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作
1.数据结构-链式队列的实现-C语言 typedef struct QNode { int data; struct QNode *next; }QNode,*QueuePtr; typedef st ...
- C语言数据结构-循环队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作
1.数据结构-循环队列的实现-C语言 #define MAXSIZE 100 //循环队列的存储结构 typedef struct { int* base; //基地址 int _front; //头 ...
- C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作
1.数据结构-顺序线性表的实现-C语言 #define MAXSIZE 100 //结构体定义 typedef struct { int *elem; //基地址 int length; //结构体当 ...
- C语言数据结构——第三章 栈和队列
三.栈和队列 栈和队列是两种重要的线性结构.从数据结构的角度来看,栈和队列也是线性表,它的特殊性在于栈和队列的基本操作是线性表操作的子集,它们的操作相对于线性表来说是受到限制的,因此,可以称其为限定性 ...
随机推荐
- MySQL 备份脚本--mysqldump在slave 上进行备份
MySQL 备份脚本--mysqldump在slave 上进行备份 使用mysqldump在slave上进行备份,建议使用stop slave sql_thread,start slave sql_t ...
- 转:Oracle下创建ASM磁盘总结
Oracle下创建ASM磁盘总结 文章转载:https://blog.csdn.net/okhymok/article/details/78791841?utm_source=blogxgwz1 2. ...
- arm开发板6410/2440上mjpg-streamer网络视频服务器移植
摄像头移植 一.环境 主机环境 :ubuntu 10.10 目标板 :FS-S5PC100 主机工具链 :gcc-4.4.5 交叉工具链 :arm-unknown-li ...
- 手机定位室内gps没信号
手机定位一般分3种,gps,手机信号基站,上网地点,其中gps信号一般只有户外有,所以在室外的时候只开启定位和gps就可以定位了,但是在室内没有gps的情况,就需要开网络定位了.
- iphone配置实用工具iPhone Configuration Utility
下载地址 http://support.apple.com/kb/DL1466 安装完毕后,在设备->控制台,可以很方便看到报错信息
- Spring注解-TaskScheduler
一.定义配置类 import org.springframework.context.annotation.ComponentScan; import org.springframework.cont ...
- maven 配置说明
1.坐标 1.1 每一jar文件都有一个唯一坐标.通过坐标可以精确确定是哪个jar 1.2 坐标组成 1.2.1 Group ID : 公司名.公司网址倒写 1.2.2 Artifact ID : 项 ...
- Ros学习——roslaunch
roslaunch:启动定义在launch文件中的多个节点 1.launch文件解析 <launch> #以launch标签开头以表明这是一个launch文件 #两个节点分组并以'命名空间 ...
- Tensorflow学习练习-卷积神经网络应用于手写数字数据集训练
# coding: utf-8 import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data mn ...
- [转]CSS块级元素和行内元素
原地址:http://www.studyofnet.com/news/398.html 本文导读:HTML中的元素可分为两种类型:块级元素和行级元素.这些元素的类型是通过文档类型定义(DTD)来指明. ...