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
;
}
查看全文
相关阅读:
第一章 操作系统引论
程序流程结构
IE网页cab插件无法安装
Java面试题整理(题目内容非原创)
linux下安装字体
博客园使用Silence主题装饰
编码问题总结
JUnit 4.10 新功能简介——RuleChain 和TemporaryFolder的应用
Usage and Idioms——Rules
Usage and Idioms——Theories
原文地址:https://www.cnblogs.com/powersun/p/972020.html
最新文章
【php】expose_php 作用
【php】php安全问题
【php】 phpword下载文件问题
【php】命名空间的影响
【php】对象的比较
【php】【趣味代码】对象引用的比较
【php】【特殊案例】数组调用方法
【php】函数重载问题
【php】instanceof
罗隐《筹笔驿怀古》
热门文章
怀念我的老师——丁伟岳院士 by 史宇光
时态问题
证明定积分等式
数学语录
How to do Mathematics
问题出在哪?
罗懋康教授: 学数学, 要通“心法”
2. C++中的引用
1. 内存分区模型以及new、delete操作
第二章 系统总线
Copyright © 2011-2022 走看看