队的思想:先进先出。其他的东西不讲了,下面展示代码。
队顺序存储的实现:
# include <stdlib.h>
# include <iostream.h>
//宏定义
# define CHUZHI 10//初始队的大小
# define ZENGZHI 5 //为了不出现队溢出而出现
//队头的数据类型
struct queue
{
int * top;//存放队的尾
int * base;//存放队的头
int max;//存放队的大小
};
//初始化队
void chushihua(struct queue &q)
{
q.base=(int *)malloc(10 * sizeof(int));//给队开辟空间
if(q.base)//开辟是否成功
{//队头元素赋初值
q.top=q.base;
q.max=CHUZHI;
}
else
cout<<"内存空间不足!请关闭一些程序后在进行此操作!\n";
}
//进队函数
void inqueue(struct queue &q,int e)
{//判断队是否满了
if(q.top-q.base>=q.max)
{//队满后的操作
q.base=(int *)realloc(q.base,5+q.max);
q.top=q.base+q.max;
q.max=q.max+ZENGZHI;
}
*q.top=e;//元素进队
q.top++;//top指向队顶
cout<<"进队操作已完成!\n";
}
//出队函数
void outqueue(struct queue &q,int &e)
{
if(q.base!=q.top)
{//队不为空的操作
e=*(q.base);//元素出队
cout<<e<<"\n";//输出元素
q.base++;//队底地址的改变
}
else
cout<<"此队为空队!\n";
}
//主函数
void main()
{
int e;//存放出队和进队的值
int option;//存放用户的选项
struct queue q;//构造一个队
chushihua(q);//队的初始化操作
e=0;
option=0;
while(option!=3)
{
cout<<"\n\n\n\n 菜单\n";
cout<<" 1、进队\n";
cout<<" 2、出队\n";
cout<<" 3、退出\n";
cout<<"\n请选择操作码:";
{
case 1:
cout<<"请输入进队的元素值:";
cin>>e;
inqueue(q,e);
break;
case 2:
outqueue(q,e);
break;
}
}
}
队的链式存储
# include <stdlib.h>
# include <iostream.h>
//定义结点数据类型
typedef struct Queue
{
int data;//存放数据
struct Queue * next;//存放下一个结点的地址
}*queue;
//定义头结点和尾结点的类型
typedef struct
{
queue top;//存放尾
queue base;//存放头
}Head;
//队头的初始化
void chushihua(Head &q)
{
q.base=(queue)malloc(sizeof(struct Queue));//开辟空间
q.top=q.base;//给对头中的元素赋初值
}
//进队操作
void inqueue(Head &q,int e)
{
queue p;//定义一个存放结点类型的指针
p=(queue)malloc(sizeof(struct Queue));//为p开辟空间
p->data=e;//把进队的元素存放在p所指空间的data项中
(q.top)->next=p;//把p插入到队中
q.top=p;
cout<<"进队成功!\n";
}
//出队操作
void outqueue(Head &q,int &e)
{
if(q.base!=q.top)
{//队不为空的操作
q.base=q.base->next;//元素出队,且base指向下一个地址
e=q.base->data;
cout<<"出队元素为:"<<e<<"\n";
}
else
{
cout<<"此队为空队!\n";
}
}
Head q;//定义一个队头
int e;//存放进队和出队的数据
int option;//存放用户的操作
chushihua(q);//队的初始化
option=0;
while(option!=3)
{
cout<<"\n\n\n\n 菜单\n";
cout<<" 1、进栈\n";
cout<<" 2、出栈\n";
cout<<" 3、退出\n";
cout<<"\n\n请选择您的操作:";
cin>>option;
switch(option)
{
case 1:
cout<<"请输入进队元素值:";
cin>>e;
inqueue(q,e);
break;
case 2:
outqueue(q,e);
break;
case 3:
break;
队顺序存储的实现:
# include <stdlib.h>
# include <iostream.h>
//宏定义
# define CHUZHI 10//初始队的大小
# define ZENGZHI 5 //为了不出现队溢出而出现
//队头的数据类型
struct queue
{
int * top;//存放队的尾
int * base;//存放队的头
int max;//存放队的大小
};
//初始化队
void chushihua(struct queue &q)
{
q.base=(int *)malloc(10 * sizeof(int));//给队开辟空间
if(q.base)//开辟是否成功
{//队头元素赋初值
q.top=q.base;
q.max=CHUZHI;
}
else
cout<<"内存空间不足!请关闭一些程序后在进行此操作!\n";
}
//进队函数
void inqueue(struct queue &q,int e)
{//判断队是否满了
if(q.top-q.base>=q.max)
{//队满后的操作
q.base=(int *)realloc(q.base,5+q.max);
q.top=q.base+q.max;
q.max=q.max+ZENGZHI;
}
*q.top=e;//元素进队
q.top++;//top指向队顶
cout<<"进队操作已完成!\n";
}
//出队函数
void outqueue(struct queue &q,int &e)
{
if(q.base!=q.top)
{//队不为空的操作
e=*(q.base);//元素出队
cout<<e<<"\n";//输出元素
q.base++;//队底地址的改变
}
else
cout<<"此队为空队!\n";
}
//主函数
void main()
{
int e;//存放出队和进队的值
int option;//存放用户的选项
struct queue q;//构造一个队
chushihua(q);//队的初始化操作
e=0;
option=0;
while(option!=3)
{
cout<<"\n\n\n\n 菜单\n";
cout<<" 1、进队\n";
cout<<" 2、出队\n";
cout<<" 3、退出\n";
cout<<"\n请选择操作码:";
cin>>option;
{
case 1:
cout<<"请输入进队的元素值:";
cin>>e;
inqueue(q,e);
break;
case 2:
outqueue(q,e);
break;
}
}
}
队的链式存储
# include <stdlib.h>
# include <iostream.h>
//定义结点数据类型
typedef struct Queue
{
int data;//存放数据
struct Queue * next;//存放下一个结点的地址
}*queue;
//定义头结点和尾结点的类型
typedef struct
{
queue top;//存放尾
queue base;//存放头
}Head;
//队头的初始化
void chushihua(Head &q)
{
q.base=(queue)malloc(sizeof(struct Queue));//开辟空间
q.top=q.base;//给对头中的元素赋初值
}
//进队操作
void inqueue(Head &q,int e)
{
queue p;//定义一个存放结点类型的指针
p=(queue)malloc(sizeof(struct Queue));//为p开辟空间
p->data=e;//把进队的元素存放在p所指空间的data项中
(q.top)->next=p;//把p插入到队中
q.top=p;
cout<<"进队成功!\n";
}
//出队操作
void outqueue(Head &q,int &e)
{
if(q.base!=q.top)
{//队不为空的操作
q.base=q.base->next;//元素出队,且base指向下一个地址
e=q.base->data;
cout<<"出队元素为:"<<e<<"\n";
}
else
{
cout<<"此队为空队!\n";
}
}
void main()
{Head q;//定义一个队头
int e;//存放进队和出队的数据
int option;//存放用户的操作
chushihua(q);//队的初始化
option=0;
while(option!=3)
{
cout<<"\n\n\n\n 菜单\n";
cout<<" 1、进栈\n";
cout<<" 2、出栈\n";
cout<<" 3、退出\n";
cout<<"\n\n请选择您的操作:";
cin>>option;
switch(option)
{
case 1:
cout<<"请输入进队元素值:";
cin>>e;
inqueue(q,e);
break;
case 2:
outqueue(q,e);
break;
case 3:
break;
default:
break;
}
}
}