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
;
}
查看全文
相关阅读:
【结构型】Proxy模式
【结构型】Flyweight模式
【结构型】Facade模式
【结构型】Decorate模式
【结构型】Composite模式
适配器模式 -- 大话设计模式
状态模式 -- 大话设计模式
抽象工厂模式 -- 大话设计模式
建造者模式 -- 大话设计模式
观察者模式 -- 大话设计模式
原文地址:https://www.cnblogs.com/powersun/p/972020.html
最新文章
流量成本、定倍率
价格锚点(避免极端、权衡对比)
损失规避
中国历史3981历史大事件
论公平与个人利益
localhost无法访问的问题
清明节一点感悟
心理账户、沉没成本、比例偏见
markdown简单语法总结
js 正则表达式
热门文章
js 解析url中search时存在中文乱码问题解决方案
js高阶函数
第692期 | 人的道德是如何下降的 (背离现实世界的严重危害)
第690期 | 意大利为什么会出现黑手党?(解决问题不能只看当下)
689期 | 巨无霸的软肋在哪里? (如何在一个已经拥有巨大存量的强大敌人身边生存下来。)
【行为型】Mediator模式
【行为型】Iterator模式
【行为型】Interpreter模式
【行为型】Command模式
【行为型】Chain of responsibility模式
Copyright © 2011-2022 走看看