顺序表实现队列——————数据结构作业

版权声明:转载请注明出处 https://blog.csdn.net/Hpuer_Random/article/details/83042836

作业code1:

- 将上课给的顺序表形式实现队列序补充(代码已发给大家):
- 实现通过键盘进行插入
- 实现通过键盘进行删除
- 良好的人机交互

顺序表实现循环队列代码如下:

//循环队列的基本操作
#include<stdio.h>
#define MaxSize 50
typedef int ElemType;
//定义循环队列结构体
typedef struct
{
	ElemType data[MaxSize];
	int front,rear;
}SqQueue;
//初始化
void InitQueue(SqQueue &Q)
{
	Q.rear = Q.front = 0;
}
//判断队列是否为空
bool isEmpty(SqQueue &Q)
{
	if(Q.rear == Q.front)return true;
	else
	return false;
}
//入队操作
bool EnQueue(SqQueue &Q,ElemType x)
{
	if((Q.rear+1)%MaxSize == Q.front)return false;
	Q.rear = (Q.rear+1)%MaxSize;
	Q.data[Q.rear] = x;
//	printf("%d\n",Q.data[Q.rear]);
//用于显示入队数据return true;
}
//出队操作
bool DeQueue(SqQueue &Q,ElemType &x)
{
	if(Q.rear == Q.front)return false;
	Q.front = (Q.front+1)%MaxSize;
	x = Q.data[Q.front];
//	printf("%d\n",x);
//用于显示出队数据return true;
}

void menu()
{

        printf("1.入队\n" \
               "2.出队\n" \
               "3.输出队列\n"\
               "4.menu\n"\
               "0.退出\n"
               );
}

int main()
{
        menu();
	SqQueue q;
	int m,e,choose;
        InitQueue(q);
	while(true)
        {
                int k=0;
                scanf("%d",&choose);
                switch(choose)
                {
                        case 1:
                                printf("请输入入队元素:");
                                scanf("%d",&e);
                                EnQueue(q,e);
                                break;
                        case 2:
                                if(isEmpty(q))
                                        printf("队列为空!\n");
                                else
                                {
                                        DeQueue(q,e);
                                        printf("出队元素是:%d\n",e);
                                }
                                break;
                        case 3:
                                if(isEmpty(q))
                                        printf("队列为空!\n");
                                else
                                {
                                        printf("队列为:");
                                        for(int i=q.front+1;;i=(i+1)%MaxSize)
                                        {
                                                if(i==q.rear+1)   break;
                                                printf("%d ",q.data[i]);
                                        }
                                        printf("\n");
                                }

                                break;
                        case 4:
                                menu();
                                break;
                        case 0:
                                k=1;
                                break;
                }

                if(k)   break;
        }
return 0;
}



老师给的代码:

//循环队列的基本操作
#include<stdio.h>
#define MaxSize 50
typedef int ElemType;
//定义循环队列结构体
typedef struct
{
	ElemType data[MaxSize];
	int front,rear;
}SqQueue;
//初始化
void InitQueue(SqQueue &Q)
{
	Q.rear = Q.front = 0;
}
//判断队列是否为空
bool isEmpty(SqQueue &Q)
{
	if(Q.rear == Q.front)return true;
	else 
	return false;
}
//入队操作
bool EnQueue(SqQueue &Q,ElemType x)
{
	if((Q.rear+1)%MaxSize == Q.front)return false;
	Q.rear = (Q.rear+1)%MaxSize;
	Q.data[Q.rear] = x;
	printf("%d\n",Q.data[Q.rear]);
//用于显示入队数据return true;
}
//出队操作
bool DeQueue(SqQueue &Q,ElemType &x)
{
	if(Q.rear == Q.front)return false;
	Q.front = (Q.front+1)%MaxSize;
	x = Q.data[Q.front];
	printf("%d\n",x);
//用于显示出队数据return true;
}
int main()
{
	SqQueue q;
	int m,x;
	InitQueue(q);
	EnQueue(q,5);
	EnQueue(q,23);
	EnQueue(q,31);
	EnQueue(q,36);
	DeQueue(q,x);
	m = isEmpty(q);
	printf("%d\n",m);
return 0;
}


猜你喜欢

转载自blog.csdn.net/Hpuer_Random/article/details/83042836
今日推荐