早教吧作业答案频道 -->其他-->
简单数据结构问题,在线等,急!在具有n个单元的顺序存储循环队列中,假定front和rear分别是队头指针和队尾指针,请判断对空的条件,给出元素x入队操作的语句?
题目详情
简单数据结构问题,在线等,急!
在具有n个单元的顺序存储循环队列中,假定front和rear分别是队头指针和队尾指针,请判断对空的条件,给出元素x入队操作的语句?
在具有n个单元的顺序存储循环队列中,假定front和rear分别是队头指针和队尾指针,请判断对空的条件,给出元素x入队操作的语句?
▼优质解答
答案和解析
/* 顺序队 */
#include "stdio.h"
#include "stdlib.h"
typedef char datatype;
typedef struct QNode{
datatype data;
struct QNode *next;
}QType; //链队结点类型
typedef struct{
QType *front; //指向单链表队头结点
QType *rear; //指向单链表队尾结点
}LinkQueue;
void InitQueue(SqQueue *q){ //初始化队列
q->rear=q->front=NULL;
}
int Enqueue(SqQueue *q, datatype x)
{
QType *s;
s=(QType *)malloc(sizeof(QType));
s->data=x;
s->next=NULL;
if(q->front==NULL&&q->rear==NULL) //若为空队,直接插入
q->rear=q->front=s;
else{
q->rear->next=s; //不是空队列,则在队尾插入
q->rear=s; //修改队尾指针
}
}
int DeQueue(SqQueue *s, datatype *x){ //出对运算算法
QType *p;
if(q->front==NULL&&q->rear==NULL) //若为空队
return 0;
p=q->front;
*x=p->data;
if(q->rear==q->front) //队列只有一个结点
q->rear=q->front=NULL;
free(p);
return 1;
}
int GetHead(SqQueue *q, datatype *x){ //取对头元素运算方法
if(q->front==NULL&&q->rear==NULL) //若为空队
return 0;
*x=q->front->data; //取队头元素
return 1;
}
int QueueEmpty(SqQueue q){ //判断是否为空
if(q->front==NULL&&q->rear==NULL) //空队
return 1;
else
return 0;
}
void Traversal_SqQueue(SqQueue q){ //遍历
QType *p;
if(q->front==NULL&&q->rear==NULL) //空队
printf("此队列目前是空队\n");
else
while
printf("%c",q.data[q.front]);
}
printf("\n");
}
void main()
{SqQueue sq; int i=0;datatype a[]="abcdefghijklmn", c;
InitQueue(&sq);
while(a[i])
{if(!(Enqueue(&sq,a[i])))
printf("入队失败.\n");
i++;}
printf("队列的初始状态为:\n");
Traversal_SqQueue(sq);
if(!(DeQueue(&sq, &c)))
printf("出队失败.\n");
else
printf("%c出队后,队列为:\n",c);
Traversal_SqQueue(sq);
c='f';
{if(!(Enqueue(&sq,c)))
printf("入队失败.\n");
else
printf("%c入队后,队列为:\n",c);
Traversal_SqQueue(sq);
if(!(DeQueue(&sq,&c)))
printf("出队失败\n");
else
printf("%c出队后,队列为:\n", c);
Traversal_SqQueue(sq);}
if(!(GetHead(&sq, &c)))
printf("队空.\n");
else
printf("取队头元素%c后,队列为:\n",c);
Traversal_SqQueue(sq);
}
#include "stdio.h"
#include "stdlib.h"
typedef char datatype;
typedef struct QNode{
datatype data;
struct QNode *next;
}QType; //链队结点类型
typedef struct{
QType *front; //指向单链表队头结点
QType *rear; //指向单链表队尾结点
}LinkQueue;
void InitQueue(SqQueue *q){ //初始化队列
q->rear=q->front=NULL;
}
int Enqueue(SqQueue *q, datatype x)
{
QType *s;
s=(QType *)malloc(sizeof(QType));
s->data=x;
s->next=NULL;
if(q->front==NULL&&q->rear==NULL) //若为空队,直接插入
q->rear=q->front=s;
else{
q->rear->next=s; //不是空队列,则在队尾插入
q->rear=s; //修改队尾指针
}
}
int DeQueue(SqQueue *s, datatype *x){ //出对运算算法
QType *p;
if(q->front==NULL&&q->rear==NULL) //若为空队
return 0;
p=q->front;
*x=p->data;
if(q->rear==q->front) //队列只有一个结点
q->rear=q->front=NULL;
free(p);
return 1;
}
int GetHead(SqQueue *q, datatype *x){ //取对头元素运算方法
if(q->front==NULL&&q->rear==NULL) //若为空队
return 0;
*x=q->front->data; //取队头元素
return 1;
}
int QueueEmpty(SqQueue q){ //判断是否为空
if(q->front==NULL&&q->rear==NULL) //空队
return 1;
else
return 0;
}
void Traversal_SqQueue(SqQueue q){ //遍历
QType *p;
if(q->front==NULL&&q->rear==NULL) //空队
printf("此队列目前是空队\n");
else
while
printf("%c",q.data[q.front]);
}
printf("\n");
}
void main()
{SqQueue sq; int i=0;datatype a[]="abcdefghijklmn", c;
InitQueue(&sq);
while(a[i])
{if(!(Enqueue(&sq,a[i])))
printf("入队失败.\n");
i++;}
printf("队列的初始状态为:\n");
Traversal_SqQueue(sq);
if(!(DeQueue(&sq, &c)))
printf("出队失败.\n");
else
printf("%c出队后,队列为:\n",c);
Traversal_SqQueue(sq);
c='f';
{if(!(Enqueue(&sq,c)))
printf("入队失败.\n");
else
printf("%c入队后,队列为:\n",c);
Traversal_SqQueue(sq);
if(!(DeQueue(&sq,&c)))
printf("出队失败\n");
else
printf("%c出队后,队列为:\n", c);
Traversal_SqQueue(sq);}
if(!(GetHead(&sq, &c)))
printf("队空.\n");
else
printf("取队头元素%c后,队列为:\n",c);
Traversal_SqQueue(sq);
}
看了 简单数据结构问题,在线等,急...的网友还看了以下:
民用航空客机的机舱除通常的舱门外还设有紧急出口,发生意外情况的飞机在着陆后,打开紧急出口的舱门会自 2020-07-04 …
民用航空客机的机舱,除了有正常的舱门和舷梯连接,供旅客上下飞机,一般还设有紧急出口,发生意外情况的 2020-07-04 …
民用航空客机的机舱,除了有正常的舱门和悬梯连接,供旅客上下飞机,一般还设有紧急出口,发生意外的飞机 2020-07-08 …
一道六年级数学工程应用题有分追加急急急急急急急急急急一个装满了水的水池,有一个进水口和3个口径相同的 2020-11-26 …
一道填空题.十万火急急急急急急急急急急急急急急急急急急急急急急急急急急!一个笼子里关了鸡和兔共20只 2020-12-19 …
民用航空客机的机舱,除了有正常的舱们和旋梯连接,供旅客上下飞机,一般还没有紧急出口.发生以外情况的飞 2020-12-26 …
民用航空客机的机舱,除了有正常的舱门和舷梯连接,供旅客上下飞机,一般还设有紧急出口,发生意外情况的飞 2021-01-08 …
四川航空公司客机的机舱,除了正常的舱门和舷梯连接,供旅客上下飞机外,一般还配有紧急出口,发生意外情况 2021-01-08 …
民用航空客机的机舱,除了有正常的舱门和舷梯连接,供旅客上下飞机以外,还配有紧急出口。发生意外情况的飞 2021-01-08 …
(11分)民用航空客机的机舱除通常的舱门外还设有紧急出口,发生意外情况的飞机在着陆后,打开紧急出口的 2021-01-08 …