zoukankan
html css js c++ java
顺序队列基本操作
顺序队列基本操作
#include
"
stdafx.h
"
#include
"
stdio.h
"
#include
"
stdlib.h
"
#define
SMALL 1
#if
(SMALL)
#define
MAX 7
int
QueueData[MAX]
=
{
'
A
'
,
'
B
'
,
'
C
'
,
'
D
'
,
'
E
'
,
'
F
'
,
'
G
'
}
;
#else
#define
MAX 14
int
QueueData[MAX]
=
{
'
A
'
,
'
B
'
,
'
C
'
,
'
D
'
,
'
E
'
,
'
F
'
,
'
G
'
,
'
H
'
,
'
I
'
,
'
J
'
,
'
K
'
,
'
L
'
,
'
M
'
,
'
N
'
}
;
#endif
/**/
/*
顺序队列类型定义
*/
typedef
struct
{
int
data[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
;
}
查看全文
相关阅读:
Linux的各个文件夹名称解释(FHS)
ThinkPHP3.1URL分发BUG修正
HTTP响应头缓存控制
Web性能测试工具:http_load安装&使用简介
无法登陆github官网的解决办法
次梯度(Subgradient)
科普帖:深度学习中GPU和显存分析
关于图像分类的问题
深度学习中的多尺度模型设计
Pytorch模型定义的三要
原文地址:https://www.cnblogs.com/powersun/p/972020.html
最新文章
DELPHI XE5
冷僻字相关问题
快译报表使用方法
WORD 内码转汉字
第一章 温故而知新
APUE(8)---进程控制(1)
APUE(7)---进程环境
APUE(5)---标准I/O库 (3)
APUE(5)---标准I/O库 (2)
APUE(5)---标准I/O库 (1)
热门文章
APUE(4)---文件和目录 (3)
APUE(4)---文件和目录 (2)
APUE(4)---文件和目录 (1)
APUE(3)---文件I/O (3)
Mysql主从配置笔记
LVS+Keepalived(DR模式)学习笔记
MySQL视图概述
Sphinx(Coreseek)安装和使用指南
CentOS7如何使用U盘安装
rsync客户端命令使用简介
Copyright © 2011-2022 走看看