如何编写队列

如何编写队列,第1张

lude "malloc.h"

#define OK 1

#define ERROR 0

#define NULL 0

#define status int

typedef int Elemtype

/*这个定义的是队列元素的数据结构*/

typedef struct tailDATA{

Elemtype data/*这个存放的是队列元素的值*/

struct tailDATA *next//指向下一个元素

}datatail,*map

/*以下定义的是队列头的数据结构*/

typedef struct Tail{

/*说明:对队列进行 *** 作的时候,插入的时候是对front *** 作,删除*/

Elemtype data/*这个记载的是队列的元素的个数*/

map front/*这个是队列的头*/

map rear/*这个是队列的尾*/

}tail,*mappath

/*以下定义的就是 *** 作了,初始话的 *** 作就不想做了,直接写个插入和删除等的一些的算法就可以了*/

status inserttail(mappath &T,map P)

{/*这个函数的功能是将一个个已知的元素插入队列中*/

if(T==NULL)

{

T=(mappath)malloc(sizeof(tail))

T->data=0

T->front=NULL

T->rear=NULL

}

if(!P) return OK

T->rear->next=P

T->rear=P

if(!(T->front)) T->front=P

return OK

}

status insertdatatail(mappath &T,int a)

{/*这个函数将一个元素插入队列中,其实这个函数是没有必要的,但是为了方便起见,还是写了个*/

if(T==NULL)

{

T=(mappath)malloc(sizeof(tail))

T->data=0

T->front=NULL

T->rear=NULL

map linshi=(map)malloc(sizeof(datatail))

linshi->data=a

linshi->next=NULL

T->front=linshi

T->rear=linshi

T->data=1

return OK

}

map linshi=(map)malloc(sizeof(datatail))

linshi->data=a

linshi->next=NULL

T->rear->next=linshi

T->rear=linshi

if(!(T->front)) T->front=linshi

T->data++

return OK

}

status deltail(mappath &T)

{/*因为对队列进行删除 *** 作的时候,基本上是没有什么条件,就是对front做一些相应的 *** 作就可以了

,所以他的函数列表也就比较少了*/

if(!T) return ERROR/*如果队列本来就是空的,那么就返回一个错误的信息*/

if(T->front==T->rear)

{/*如果队列只有一个元素,就执行下面的 *** 作,防止出现了错误*/

map linshi=T->front

free(linshi)

T->data=0

T->front=NULL

T->rear=NULL

return OK

}

map linshi=T->front

T->front=T->front->next

T->data--

free(linshi)

return OK

}

status puttail(mappath T)

{/*这个是对一个已经存在的队列进行输出*/

if(!T) return ERROR

printf("the tail'count is %d\n",T->data)

int count=T->datamap q=T->front

for(int i=0i<counti++)

{

printf("%d",q->data)

q=q->next

}

return OK

}

int main()

{

printf("hello,world!\n")

mappath q=NULLint count1=0int dataa=0

printf("please input a number to the count of tail\n")

scanf("%d",&count1)

for(int i=0i<count1i++)

{

printf("please input a number to tail\n")

scanf("%d",&dataa)

insertdatatail(q,dataa)

}

puttail(q)

deltail(q)

puttail(q)

return 0

}

这完全是文不对题啊,队列是一种先进先出的数据结构,通常在各种编程语言中都提供相应的类库支持,但MySQL是一个关系型数据库管理系统,并不直接提供这种功能,也不应该提供这种功能。

如果真需要先进先出,就把查询的结果放入到对应高级语言的队列中即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6765142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存