Estructura de datos: la realización de la función básica de la segunda cola del experimento.

La realización de la función básica de la segunda cola del experimento.

1. Propósito del experimento

1. Domine el método básico de uso de VC para depurar colas
2. Domine las operaciones básicas de las colas y realice los algoritmos de establecimiento, inserción y eliminación de colas en dos métodos de almacenamiento: representación de secuencia y representación en cadena.

2. Ambiente experimental

1. Microordenador PC
2. Sistema operativo Windows
3. VC6.0 o superior

3. Contenido experimental

Elija un método de almacenamiento de la representación de secuencia de la cola y la representación de cadena, y realice los algoritmos de creación, inserción y eliminación de la cola; escriba programas, defina las variables correspondientes e implemente el contenido del experimento en la máquina.

4. Procedimientos, pruebas y resultados experimentales

1. Código

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

#define ERROR  0
#define OK     1
#define TRUE   1
#define FALSE  0
#define QUEUESIZE 10

typedef int Status;
typedef int QElemtype;

typedef struct QNode{
    
    
	QElemtype *base;
	int front;
	int rear;
}SqQueue;

//初始化
void InitQueue(SqQueue *Q)
{
    
    
	Q->base=(QElemtype*)malloc(sizeof(QElemtype)*QUEUESIZE);
	assert(Q->base!=NULL);
	Q->front=Q->rear=0; 
}

//入队
Status EnQueue(SqQueue *Q,QElemtype e)
{
    
    
	if(Q->rear==QUEUESIZE)
	{
    
    
		return ERROR;
	}
	Q->base[Q->rear]=e;
	Q->rear++;
	return OK;
}

//判断是否为空
Status QueueEmpty(SqQueue *Q)
{
    
    
	if(Q->front==Q->rear)
	{
    
    
		return TRUE;
	}
	return FALSE;
}

//求长度
Status QueueLength(SqQueue Q)
{
    
    
	return Q.rear-Q.front;
}

//获取队头元素
Status GetHead(SqQueue *Q,QElemtype *e)
{
    
    
	if(Q->front==Q->rear)
	{
    
    
		return ERROR;
	}
	*e=Q->base[Q->front];
	return OK;
}

//销毁
void DestoryQueue(SqQueue *Q)
{
    
    
	if(Q->base)      //队列Q存在 
	{
    
    
		free(Q->base);
	}
	Q->base=NULL;
	Q->front=Q->rear=0;
}

//清空

void ClearQueue(SqQueue *Q)
{
    
    
	Q->front=Q->rear=0;
}

//出队
Status DeQueue(SqQueue *Q,QElemtype *e)
{
    
    
	if(Q->front==Q->rear)
	{
    
    
		return ERROR;
	}
	*e=Q->base[Q->front];
	Q->front++;
	return OK;
}

//遍历
void QueueTraverse(SqQueue Q,void(*visit)(QElemtype))
{
    
    
	int i=Q.front;
	while(i!=Q.rear)
	{
    
    
		visit(Q.base[i]);
		i++;
	}
	printf("\n");
} 
void Print(QElemtype e)
{
    
    
	printf("%d ",e);
}
//主函数
int main()
{
    
    
	QElemtype i,e,d;
	SqQueue Q;
	InitQueue(&Q);
	printf("请输入队列的%d个元素:\n",QUEUESIZE);
	for(i=0;i<QUEUESIZE;i++)
	{
    
    
		scanf("%d",&d);
		EnQueue(&Q,d);
	}
	printf("队列的元素为:");
	QueueTraverse(Q,Print);
	printf("队列长度为:%d\n",QueueLength(Q));
	int k=QueueLength(Q);
	printf("连续%d次由对头删除元素,队尾插入元素:\n",k/2);
	for(i=0;i<k/2;i++)
	{
    
    
		DeQueue(&Q,&e);
		printf("删除的队列的元素是:%d,请输入插入的元素:",e);
		scanf("%d",&d);
		EnQueue(&Q,d);
	}
	printf("新的队列元素为:\n");
	QueueTraverse(Q,Print);
	
	int n=GetHead(&Q,&e);
	if(n)printf("对头元素为:%d\n",e);
	else {
    
    
		printf("队空!\n");	return -1;
	}
	ClearQueue(&Q);
	printf("清空队列后队列是否为空:%d\t(1:为空 ,0:不为空)\n",QueueEmpty(&Q));
	DestoryQueue(&Q);
	printf("销毁队列后:\nQ.base=%u\tQ.front=%d\tQ.rear=%d\t\n",Q.base,Q.front,Q.rear);
	return 0; 
}

  1. resultado de la operación
    inserte la descripción de la imagen aquí

5. Resumen experimental

1. Una cola es una tabla lineal que solo permite la inserción en un extremo y la eliminación en el otro extremo. El final que permite la inserción es el final de la cola, y el final que permite la eliminación es la cabeza de la cola.
2. El almacenamiento secuencial se implementa con una matriz. Por ejemplo, hay una cola con n elementos. El final del subíndice de la matriz 0 es la cabeza de la cola. La operación de entrada en la cola es agregar uno por uno a través del subíndice de la matriz sin moviendo elementos, pero si elimina la cola El elemento principal, los siguientes elementos avanzarán y la complejidad de tiempo correspondiente es O (n).

Supongo que te gusta

Origin blog.csdn.net/chengzilhc/article/details/104677294
Recomendado
Clasificación