(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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)