#include"stdafx.h"
#include"stdio.h"
#include"stdlib.h"
#defineSMALL 1
#if(SMALL)
#defineMAX7
int QueueData[MAX] = {'A','B','C','D','E','F','G'};
#else
#defineMAX14
int QueueData[MAX] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N'};
#endif
/*顺序队列类型定义*/
typedefstruct
{
intdata[MAX];
int head;
int tail;
}sqQueue;
/*链队列类型定义*/
struct LinkQueue
{
int data;
struct LinkQueue *link;
};
typedef struct LinkQueue lkQueue;
//-----------------------------------------------------------------------------------------
/*顺序队列基本操作函数定义部分*/
//顺序队列的初始化函数sqInitialize()
sqQueue *sq_Initialize()
{
sqQueue *p;
p = (sqQueue *)malloc(sizeof(sqQueue));
if(p==NULL)
{
return(NULL);
}
else
{
p->data[0] = 0;
p->head = 0;
p->tail = 0;
return(p);
}
}
//顺序队列的判空函数qIsEmpty()
int qIsEmpty(sqQueue *queue)
{
if(queue->head==queue->tail)
return(1);
else
return(0);
}
//顺序队列的判满函数qIsFull()
int qIsFull(sqQueue *queue)
{
if(queue->head==MAX)
return(1);
else
return(0);
}
//顺序队列的入队函数qInQueue()
int qInQueue(sqQueue *queue,int data)
{
if(queue->tail==MAX)
{
printf("队列已满!/n");
return(0);
}
else
{
queue->data[queue->tail++] = data;
return(1);
}
}
//顺序队列的出队函数qOutQueue()
int qOutQueue(sqQueue *queue,int *p)
{
if(queue->head==queue->tail)
{
printf("队列已空!/n");
return(0);
}
else
{
*p = queue->data[queue->head++];
return(1);
}
}
//顺序队列的数据入队操作函数qInputValue()
void qInputValue(sqQueue *queue,int array[])
{
int i=0;
while(qInQueue(queue,array[i]))
printf("Queue[%d] = %c/t",i,array[i++]);
}
//顺序队列的数据出队操作函数qOutputValue()
void qOutputValue(sqQueue *queue)
{
int i,QueueData;
i=0;
while(qOutQueue(queue,&QueueData))
printf("Queue[%d] = %c/t",i++,QueueData);
printf("/n");
}
//-----------------------------------------------------------------------------------------
/*链式队列基本操作函数定义部分*/
//链式队列的初始化函数lk_Initialize()
lkQueue *lk_Initialize()
{
lkQueue *p;
p = (lkQueue *)malloc(sizeof(lkQueue));
if(p==NULL)
{
return(NULL);
}
else
{
p->data = 0;
p->link = NULL;
return(p);
}
}
//链式队列的入队函数lkInQueue()
//注意:在入队时,参数是队尾指针,返回值也是队尾指针
lkQueue *lkInQueue(lkQueue *tail,int data)
{
lkQueue *p;
p = (lkQueue *)malloc(sizeof(lkQueue));
if(p==NULL)
{
printf("新增链式队列元素时内存溢出!/n");
return(tail);
}
else
{
p->data = data;
p->link = tail;
return(p);
}
}
//链式队列的出队函数lkInQueue()
//注意:在出队时,参数是队首指针,返回值也是队首指针
lkQueue *lkOutQueue(lkQueue *head,int *data)
{
*p = head->data;
lkQueue *p;
p = (lkQueue *)malloc(sizeof(lkQueue));
if(p==NULL)
{
printf("创建链式队列时内存溢出!/n");
return(tail);
}
else
{
p->data = data;
p->link = tail;
return(p);
}
}
//-----------------------------------------------------------------------------------------
int main(int argc, char* argv[])
{
sqQueue *queue1;
lkQueue **lkHead,**lkTail;
queue1 = sq_Initialize();
if(queue1==NULL)
{
printf("创建顺序队列时内存溢出!/n");
return 0;
}
else
{
printf("/n顺序队列[入队]数据........./n");
qInputValue(queue1,QueueData);
printf("/n顺序队列[出队]数据........./n");
qOutputValue(queue1);
}
printf("/n运行完毕!/n");
return 0;
}
分享到:
相关推荐
数据结构(C语言版)——循环顺序队列(代码版)里面...基本操作为:1:初始化循环顺序队列2:销毁循环顺序队列3:清空循环顺序队列4:循环顺序队列是否为空5:返回循环顺序队列头元素6:元素入队7:元素出队8:当前循环顺序队列长度
循环顺序队列的实现,包含了各种基本操作,另外附有菜单功能,方便运行,不过好像只能运行整形变量
本程序共设计了顺序队列需要的的5个基本操作运算,分别是入队,出队,取对头元素,置空队列,输出队列。附带实验报告。
栈和队列
C语言实现顺序队列(循环队列)的常用操作,包括初始化顺序队,创建顺序队,入队,出队,计算队的长度,清空队列等等
printf(" 主菜单 \n"); printf("-------------------------------------\n"); printf(" 1 **** 创建队******* \n"); printf(" 2 **** 入队******* \n"); printf(" 3 **** 出队******* \n");...
用C语言实现数据结构的顺序队列的代码过程,加结果分析
循环顺序队列(+1判满)的基本操作,采用牺牲一个存储单元判空,判满。包括出队,入队,队的判空,判满,队的销毁等。是针对初学者的原理展示,实用性较差。
任意输入队列长度和队列中的元素值,构造一个顺序循环队列,对其进行清空、插入新元素、返回队头元素以及删除队头元素操作。
队列的基本操作的实现,这个程序中演示了顺序队列和链式队列的初始化、创建、删除、查找以及输出等功能。使用c语言所写。
顺序循环队列,详细介绍见博客链接:http://blog.csdn.net/u013071074/article/details/27583741
队列中用环状数组存储数据(合理利用空间、减少操作),通过基本的append()将元素加入队列,serve()将元素移出队列,先进入的先移出,retieve得到最先加入队列的元素。 参考博客:...
大连民族学院,计科125,你一定会非常满意的,下载吧
这是对队列的基本操作- **队列的定义** - **顺序队列及其操作** - **循环队列及其操作** - **链队列及其操作**
代码由C++程序设计语言编写,包含栈和队列的基本操作(栈:出、入、取、判空等|队列:出、入、取、打印队列、判空等),并展示了三个具体的使用例子,包括用栈求进制转换和用队列打印杨辉三角形,以及用栈计算后缀...
数据结构中循环队列的基本操作,分享一下,欢迎大家批评指正!
本实例实现了泛型顺序队列和泛型循环队列的基本操作,并通过界面演示了队列中元素的变化,最后结合栈实现了回文字符串的判断,通过本实例可以充分掌握C#队列数据结构。
头歌数据结构的题目: 顺序表的基本操作和应用 链表的基本操作和应用, 循环队列的应用 同时还有一些附加题,n皇后和钓鱼
主要包含顺序栈 链栈 顺序队列 链式队列 循环队列的入队出队 入栈出栈等常用算法操作
把堆栈和队列的顺序存储(环队)和链表存储的数据进队、出队等运算其中一部分进行程序实现。可以实验一的结果自己实现数据输入、数据显示的函数。