数据结构(使用C语言)队列

数据结构(使用C语言)队列,第1张

对顺序循环队列,常规的设计方法是使用队尾指针和队头指针,队尾指针用于指出当前胡队尾位置下标,队头指针用于指示当前队头位置下标。现要求:

(1)设计一个使用队头指针和计数器胡顺序循环循环队列抽象数据类型,其中包括:初始化,入队列,出队列,取队头元素肯判断队列是否非空;

#include "stdio.h"

#include "malloc.h"

#include "stdlib.h"

#include "conio.h"

#define MAX 80

typedef struct

{

int data[MAX]

int front,rear

int num

}SeQue

SeQue *Init_SeQue()

{

SeQue *s

s=new SeQue

s->front=s->rear=MAX-1

s->num=0

return s

}

int Empty_SeQue(SeQue *s)

{

if(s->num==0)

return 1

else

return 0

}

int In_SeQue(SeQue *s,int x)

{

if(s->num==MAX)

return 0

else

s->rear=(s->rear+1)%MAX

s->data[s->rear]=x

s->num++

return 1

int Out_SeQue(SeQue *s,int *x)

{

if(Empty_SeQue(s))

return 0

else

{

s->front=(s->front+1)%MAX

*x=s->data[s->front]

s->num--

return 1

}

}

void Print_SeQue(SeQue *s)

{

int i,n

i=(s->front+1)%MAX

n=s->num

while(n>0)

{ printf("%d ",s->data[i])

i=(i+1)%MAX

n--

}

}

void main()

{

SeQue *s

int k,flag,x

s=Init_SeQue()

do{

printf("\\\")

printf("\\t\\t\\t循环顺序队列\")

printf("\\t\\t\\t***********************\")

printf("\\t\\t\\t**1-入队**\")

printf("\\t\\t\\t**2-出队**\")

printf("\\t\\t\\t**3-判 队 空**\")

printf("\\t\\t\\t**4-队列显示**\")

printf("\\t\\t\\t**0-返回**\")

printf("\\t\\t\\t***********************\")

printf("\\t\\t\\t 请输入菜单项(0-4):")

scanf("%d",&k)

switch(k)

{

case 1:

printf("\请输入入队元素:")

scanf("%d",&x)

flag=In_SeQue(s,x)

if(flag==0)

printf("\队满不能入队!按任意键返回..")

else

printf("\元素已入队!按任意键返回..")

getch()

system("cls")

break

case 2:

flag=Out_SeQue(s,&x)

if(flag==0)

printf("\队列空出队失败!按任意键返回..")

else

printf("\队列头元素已出队~!按任意键返回..")

getch()

system("cls")

break

case 3:

flag=Empty_SeQue(s)

if(flag==1)

printf("\该队列为空!按任意键返回..")

else

printf("\该队列不为空!按任意键返回..")

getch()

system("cls")

break

case 4:

printf("\该队列元素为:")

Print_SeQue(s)

printf("\按任意键返回..")

getch()

system("cls")

break

}

}while(k!=0)

}

C++ Queues(队列)

C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。

1.back() 返回一个引用,指向最后一个元素

2.empty() 如果队列空则返回真

3.front() 返回第一个元素

4.pop() 删除第一个元素

5.push() 在末尾加入一个元素

6.size() 返回队列中元素的个数

队列可以用线性表(list)或双向队列(deque)来实现(注意vector container 不能用来实现queue,因为vector 没有成员函数pop_front!):

queue<list<int>>q1

queue<deque<int>>q2

其成员函数有“判空(empty)” 、“尺寸(Size)” 、“首元(front)” 、“尾元(backt)” 、“加入队列(push)” 、“d出队列(pop)”等 *** 作。

例:

int main()

{

queue<int>q

q.push(4)

q.push(5)

printf("%d\n",q.front())

q.pop()

return 0

}


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

原文地址: http://outofmemory.cn/yw/7765243.html

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

发表评论

登录后才能评论

评论列表(0条)

保存