(1)创建队列,将asdfghjkl依次入队。代码及注释
(2)将队列asdfghjkl依次出队。代码及注释
(3)编程实现创建一个最多6个元素的循环队列,将ABCDEF依次入队,判断循环队列是否队满。代码及注释
(1)和(2)是一个代码,(3)在(1)的基础上有一些修改。
(1)和(2)运行结果及代码:
#include <iostream>
using namespace std;
#define MAXLEN (int)20
typedef char elementtype;
//队列先进先出
typedef struct
{
elementtype* element;
int cur;
int tail;
}SQueue;
//初始化栈
void InitStack_sq(SQueue &s)
{
int i=0;
s.element = new elementtype[MAXLEN];
s.cur = 0;
s.tail = 0;
}
//判断队列是否为空
int isEmpty_sq(SQueue s)
{
if(s.tail ==0 || s.cur == s.tail)
return 1;
else
return 0;
}
//判断是否队满
int isFull_sq(SQueue s)
{
if(s.tail == MAXLEN)
return 1;
else
return 0;
}
//取队列元素
int GetTop_sq(SQueue &s,elementtype& x)
{
if(isEmpty_sq(s))
return 0;
x = s.element[s.cur];
return 1;
}
//入队
int Push_sq(SQueue &s,elementtype x)
{
if(isFull_sq(s))
return 0;
//插入队列
s.element[s.tail] = x;
s.tail++;
return 1;
}
//出队
int Pop_sq(SQueue& s,elementtype& x)
{
if(isEmpty_sq(s))
return 0;
x = s.element[s.cur];
s.cur++;
return 1;
}
//遍历队列元素
void showAll(SQueue s)
{
cout <<"队列元素:";
for(int i=s.cur;i<s.tail;i++)
{
cout << (char)s.element[i];
}
cout << endl;
}
int main()
{
SQueue s;
InitStack_sq(s); //初始化队列
//asdfghjkl依次入队
Push_sq(s,'a');
Push_sq(s,'s');
Push_sq(s,'d');
Push_sq(s,'f');
Push_sq(s,'g');
Push_sq(s,'h');
Push_sq(s,'k');
Push_sq(s,'l');
//显示队列元素
showAll(s);
elementtype x;
//依次出队
cout <<"出队:";
while(!isEmpty_sq(s))
{
Pop_sq(s,x);
cout <<(char)x;
}
cout << endl;
return 0;
}
(3)运行结果:
代码:
#include <iostream>
using namespace std;
#define MAXLEN (int)6
typedef char elementtype;
//队列先进先出
typedef struct
{
elementtype* element;
int cur;
int tail;
}SQueue;
//初始化栈
void InitStack_sq(SQueue &s)
{
int i=0;
s.element = new elementtype[MAXLEN];
for(;i<MAXLEN;i++)
s.element[i] = 0;
s.cur = 0;
s.tail = 0;
}
//判断队列是否为空
int isEmpty_sq(SQueue s)
{
if(s.tail ==0 || s.cur == s.tail)
return 1;
else
return 0;
}
//判断是否队满
int isFull_sq(SQueue s)
{
if(s.tail == MAXLEN)
return 1;
else
return 0;
}
//取队列元素
int GetTop_sq(SQueue &s,elementtype& x)
{
if(isEmpty_sq(s))
return 0;
x = s.element[s.cur];
return 1;
}
//入队
int Push_sq(SQueue &s,elementtype x)
{
if(isFull_sq(s))
s.tail = 0;
//插入队列
s.element[s.tail] = x;
s.tail++;
return 1;
}
//出队
int Pop_sq(SQueue& s,elementtype& x)
{
if(isEmpty_sq(s))
return 0;
x = s.element[s.cur];
s.cur++;
return 1;
}
//遍历队列元素
void showAll(SQueue s)
{
cout <<"循环队列元素:";
for(int i=0;i<MAXLEN;i++)
{
if(s.element[i] != '\0')
cout << (char)s.element[i];
}
cout << endl;
}
int main()
{
SQueue s;
InitStack_sq(s); //初始化队列
//ABCDEF入队
Push_sq(s,'A');
Push_sq(s,'B');
Push_sq(s,'C');
Push_sq(s,'D');
Push_sq(s,'E');
Push_sq(s,'F');
//显示队列元素
showAll(s);
//判断是否队满
if(isFull_sq(s))
cout <<"此时队满"<<endl;
else
cout <<"队列未满"<<endl;
return 0;
}