线性队列

#include "stdafx.h"

#include <iostream>
using namespace std;

typedef int DataType;
#define SIZE 100

typedef struct {
	DataType data[SIZE];
	int head,tail;
}SqQueue;

//初始化
SqQueue init(SqQueue *Q)//顺序型数据结构,初始化之类的方法一定要有返回值
{
	Q = (SqQueue*)malloc(sizeof(SqQueue));
	if(Q==NULL)
	{
		printf("%s","init failed");
		exit(0);
	}
	else
	{
		Q->data[0]=0;
		Q->head = 0;
		Q->tail = 0;
	}
	return *Q;
}
//判断是否为空
int isQempty(SqQueue *Q)
{
	if(Q->head == Q->tail) return 1;
	else return 0;
}
//判断是否满
int isQfull(SqQueue *Q)
{
	if(Q->tail == SIZE) return 1;
	else return 0;
}
//进
void inQueue(SqQueue *Q,DataType e)
{
	if(isQfull(Q) ==1)
	{
		cout<<"full"<<endl;
			exit(0);
	}else
	{
		cout<<"q->tail"<<Q->tail<<endl;
		Q->data[Q->tail++] = e;//
		cout<<"not full"<<endl;
	}

}
//出
void outQueue(SqQueue *Q)
{
	if(isQempty(Q) == 1)
	{
		cout<<"out queue empty"<<endl;
		exit(0);
	}
	else
	{
		cout<<"out:"<<Q->data[Q->head++]<<endl;
	}
}

/*void main()
{
	SqQueue S;
	S=init(&S);
	cout<<"isempty"<<isQempty(&S)<<endl;
	inQueue(&S,1);
	cout<<"isempty"<<isQempty(&S)<<endl;
	inQueue(&S,2);
	cout<<"isempty"<<isQempty(&S)<<endl;
	outQueue(&S);

}*/

  

时间: 2024-11-19 21:44:07

线性队列的相关文章

一步一步写算法(之线性队列)

原文:一步一步写算法(之线性队列) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 这里的线性结构实际上指的就是连续内存的意思,只不过使用"线性"这个词显得比较专业而已.前面一篇博客介绍了现象结构的处理方法,那么在这个基础之上我们是不是添加一些属性形成一种新的数据结构类型呢?答案是肯定的,队列便是其中的一种. 队列的性质很简单: (1)队列有头部和尾部 (2)队列从尾部压入数据 (3)队列从头部弹出数据 那么连续内存下的队列是怎

队列的定义与实现(C语言实现)

小时候.我们做早操的时候或者军训的时候,都排成一列,有头有尾.如果你迟到了,仅仅能站到最后面一个.退场的时候.都是由第一个先走的.这就是队列雏形. 队列的定义 队列是一种特殊的线性表 队列仅在线性表的两端进行操作 队头(Front):取出数据元素的一端 队尾(Rear):插入数据元素的一端 队列不同意在中间部位进行操作! 队列实质上也就是线性表的一种特殊操作形式,在头部删除.获取,在尾部加入. 跟栈基本类似,换烫不换药.详细能够參考 栈的实现与操作(C语言实现)  与栈一样,队列相同具备线性和链

Java数据结构之线性表(2)

从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的几张,我们将会分别讲解这几种数据结构,主要也是通过Java代码的方式来讲解相应的数据结构. 今天要讲解的是:Java线性结构 Java数据结构之线性结构 说到线性结构的话,我们可以根据其实现方式分为两类: 1)顺序结构的线性表 2)链式结构的线性表 3)栈和队列的线性表 对于1)和2)的讲解,请参考

第五章 树和二叉树

上章回顾 单链表的基本操作,包括插入.删除以及查找 双向链表和循环链表的区别 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 第五章 第五章 树和二叉树 树和二叉树 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 预习检查 什么是二叉树 树的遍历有哪几种方式 树有哪些应用 [email pr

Android学习笔记之HttpClient实现Http请求....

PS:最近光忙着考试了....破组成原理都看吐了....搞的什么也不想干...写篇博客爽爽吧....貌似明天就考试了...sad... 学习笔记: 1.如何实现Http请求来实现通信.... 2.解决Android 2.3 版本以后无法使用Http请求问题....   这里我使用HttpClient来开发Http程序来完成简单的网络通信....其实使用HttpUrlConnection也可以实现,不过HttpClient可以完成HttpUrlConnection的所有功能,并且还自己增加了其他的

数据结构——二叉树的遍历

"树"是一种重要的数据结构,本文浅谈二叉树的遍历问题,採用C语言描写叙述. 一.二叉树基础 1)定义:有且仅有一个根结点,除根节点外,每一个结点仅仅有一个父结点,最多含有两个子节点,子节点有左右之分. 2)存储结构 二叉树的存储结构能够採用顺序存储,也能够採用链式存储,当中链式存储更加灵活. 在链式存储结构中,与线性链表类似,二叉树的每一个结点採用结构体表示,结构体包括三个域:数据域.左指针.右指针. 二叉树在C语言中的定义例如以下: struct BiTreeNode{ int c;

【腾讯Bugly干货】Android性能优化典范之多线程篇

本文涉及的内容有:多线程并发的性能问题,介绍了 AsyncTask,HandlerThread,IntentService 与 ThreadPool 分别适合的使用场景以及各自的使用注意事项,这是一篇了解 Android 多线程编程不可多得的基础文章,清楚的了解这些 Android 系统提供的多线程基础组件之间的差异以及优缺点,才能够在项目实战中做出最恰当的选择. 1. Threading Performance 在程序开发的实践当中,为了让程序表现得更加流畅,我们肯定会需要使用到多线程来提升程

哈希的原理和代价

总结一句话,Hash是一种典型的空间换时间,代价就是需要使用更大的空间,除了要储存源数据外还要额外的储存,hash关系的数据! [转] 哈希表和哈希函数是大学数据结构中的课程,实际开发中我们经常用到Hashtable这种结构,当遇到键-值对存储,采用Hashtable比ArrayList查找的性能高.为什么呢?我们在享受高性能的同时,需要付出什么代价(这几天看红顶商人胡雪岩,经典台词:在你享受这之前,必须受别人吃不了的苦,忍受别人受不了的屈辱),那么使用Hashtable是否就是一桩无本万利的买

进程01

进程是程序执行时的一个实例.你可以把他看做充分描述程序已经执行到何种程度的数据结构的汇集. 完全没有用户空间,内核线程 共享用户空间,用户线程 一个进程必定同时又是一个内核线程 task_struct通过pidhash_next与pidhash_pprev两个指针连入到杂凑表的某个队列中 线性队列的第一个建立的进程为init_task,这个进程是所有进程的总根,这个线性队列就是以init_task为起点,每个进程都是通过其task_struct结构中的next_task和prev_task两个指