链式队列的实现代码,链式队列的实现原理
伊德斯干货盘点
一~我爱你~什么是队列只允许在一端进行插入数据,在另一端进行删除数据的特殊的线性表。
二~我爱你~队列的特点1.队列是一种操作受限的线性表。
2.队头作为允许删除的一端。
3.队尾作为允许插入的一端。
4.没有元素的队列称为空队列。
三~我爱你~队列的基本操作1.队列的初始化
2.队列的判空操作
3.队列的入队操作
4.队列的出队操作
5.获取队列中的元素
7.计算队列中元素的个数
6.销毁队列
四~我爱你~代码实现(1)伫列文件
#包括" Queue.h "
//创建新结点
静态QNode *BuyLQNode(QElemType数据)
{
qnode * plqnode=(qnode *)malloc(sizeof(qnode));
if (NULL==pLQNode)
{
printf(申请空间失败!\ n ;
断言(plq node);
}
pLQNode-数据=日期:
plq node-_ pnl=null;
返回plqnode
}
请参见Init(LQueue *q)
{
断言(q);
q-pf front=q-prear=null;
}
请参见队列*q,QElemType数据
{
断言(q);
if(null==q-pffront)
{
q-pffront=q-prear=buylqnode(日期);
返回;
}
q-pre-_ pnext=buylqnode(日期);
q-prear=q-prear-_ pnext;
}
请参阅Pop(LQueue *q)
{
断言(q);
qnode * pdel
if(null==q-pffront)
{
返回;
}
if(q-pffront==q-prear)
{
q-prear=null;
}
pdel=q-pf ran;
q-pf front=q-pf front-_ pnext;
自由(PDL);
}
qelemtype lqueop(lqueue * q)
{
断言(q);
返回q-pffront数据;
}
qelemtype lqueback(lqueue * q)
{
断言(q);
返回q-前期数据;
}
int lqueue * q(消歧义)
{
int count=0;
qnode * pcur
断言(q);
pcur=q-pfra;
while (pCur)
{
pcur=pcur-_ pnext;
计数;
}
返回计数;
}
int null(lqueue * q)
{
返回null==-q-pf front;
}
见某人毁灭(LQueue* q)
{
断言(q);
q node * pcur=q-pf ran;
while(pCur)
{
qnode * next=pcur-_ pnext;
自由(pcur);
pcur=下一步;
}
q-pf front=q-prear=null;
}
参见一些打印(const lqueue * q)
{
对于(q node * cur=q-pf front);-是吗?=NULL:cur=cur- _pNext)
{
printf("% d-",当前日期):
}
printf(" \ n ");
}(2)队列h。文件
#包括标准视频
#包括标准库
#包括标准布尔
#include assert.h包含断言
typedef int qelemtype
//typedef struct Bt node * qelemtype;
typedef结构QNode
{
QElemType日期;
结构qnode * _ pnext
} qnode
typedef结构LQueue
{
qnode * pfara
qnode * prear
}长尾巴;
//初始化
请参见Init(LQueue *q):
//入队列
请参见有的推送(lqueue * q,qelemtype数据);
//出队列
见某人(l队列* q);
//返回队头元素
qelemtype lqueop(lqueue * q);
//返回返回队列长度
int lqueue * q(列尾x问):
//队列是否为空
int quequeempty(lqueue * q):
见某人毁灭(l队列* q);
见一些印刷品(const l queue * q);(3)试验文件
包括" Queue.h "
请参阅菜单()
打印文件(* * * * * * * * * * * * * * * *)请输入你的操作* * * * * * * * * * * \ n];
打印文件(* * * * * * * * * * * * * * * * 1)。初始化队列* * * * * * * * * * * \ n];
打印输出(* * * * * * * * * * * * * * * * 2)。入队* * * * * * * * * * * \ n];
打印输出(* * * * * * * * * * * * * * * * 3)。出队* * * * * * * * * * * \ n];
打印文件(* * * * * * * * * * * * * * * * 4)。获取队列大小* * * * * * * * * * * \ n];
打印输出(* * * * * * * * * * * * * * * * 5)。查看队列元素* * * * * * * * * * * \ n];
打印文件(* * * * * * * * * * * * * * * * 6)。销毁队列* * * * * * * * * * * \ n];
打印文件(* * * * * * * * * * * * * * * * 7)。退出* * * * * * * * * * * \ n];
printf(" \ n ");
}
int main()
l queue q;
int enele=0;
int deele=0;
int qsize=0;
int ope=0:
布尔循环=真:
而(循环)
menu();
printf(请输入你的操作");
scanf("% d,ope ");
交换机(ope)
{
案例1:
任何init(q);
printf(初始化队列成功!\ n ;
打断;打断;
案例2:
printf(输入入队元素");
scanf("% d,enele ");
推(q、enele);
printf(入队成功!\ n ;
打断;打断;
案例3:
printf(输入出队元素");
scanf("% d,deele ");
(问)短链氯化石蜡;
printf(出队元素为:%d\n,迪尔
打断;打断;
案例4:
Qsize=任意位数(q);
printf("% d \ n,qsize ");
打断;打断;
案例5:
printf(队列的元素为:\ n);
列印(q);
打断;打断;
案例6:
销毁液(q);
printf(销毁成功\ n ;
打断;打断;
案例7:
loop=false:
printf(退出成功!\ n ;
打断;打断;
默认设置:
printf(输入不合理,请重新输入!\ n ;
打断;打断;
}
}
(4)makefile文件
src=$(通配符*。c)
obj=$(patsubst %。c,%。o,$(src))
全部:测试
测试:$(obj)
gcc $^ -pthread -o $@
清洁:
-rm -rf $(obj)测试
%.o:%。c
gcc -c $ -o $@。假的:清洗所有v .结果显示
,转载请联系作者获得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。