Fortune-ley dejó base class3- sujeto 1 utiliza una cola de matriz y pila

1. El uso de matrices de aplicación pilas

(1) Análisis

Uso de índice apunta a la ubicación de la matriz representa un nuevo número debe ser colocado en qué posición.
1. Elaboración del valor asignado a la posición de índice de matriz, entonces el índice de incremento, el índice! Pila puede continuar cuando = longitud.
2. Cuando el valor de salida de corriente de la pila, y luego un índice de reducción, índice! = 0 pueden continuar para apilar. Pila no tiene que borrar el número actual, ya que el uso del índice para controlar el empuje y hacer estallar, los datos pueden ser sobrescritos.
3. Todos los elementos dentro de la pila no es un elemento de matriz, pero el elemento antes de que el índice de matriz.

(2) el código de núcleo

① Dibujo

void push(int a,int arr[],int &index)
{
	if(index ==length)
	{
		cout<<"栈已满,不可入栈"<<endl;
		return;
	}
	cout<<a<<"入栈"<<endl;
	arr[index++] = a;
}

La fórmula es directamente a la pila de datos, la pila de mayo de datos también de entrada

void push(int arr[],int &index)
{
	if(index == length)
	{
		cout<<"栈已满,不可入栈"<<endl;
		return;
	}
		
	int num;
	cout<<"请输入:";
	cin>>num;
	cout<<num<<"入栈"<<endl;
	arr[index++] = num;
}

② Pila

void pop(int arr[],int &index)
{
	if(index == 0)
	{
		cout<<"栈已空,不可出栈"<<endl;
		return;
	}
	cout<<arr[--index]<<"出栈"<<endl;
}

(3) código completo

#include<iostream>
#include<time.h>
#define length  3
using namespace std;

void print(int arr[],int index)
{
	cout<<"栈内的元素: ";
	for(int i = 0;i<index;i++)
	{
		cout<<arr[i]<<" ";
	}
	cout<<endl;
}

void push(int arr[],int &index)
{
	if(index == length)
	{
		cout<<"栈已满,不可入栈"<<endl;
		return;
	}
		
	int num;
	cout<<"请输入:";
	cin>>num;
	cout<<num<<"入栈"<<endl;
	arr[index++] = num;
}

void push(int a,int arr[],int &index)
{
	if(index == length)
	{
		cout<<"栈已满,不可入栈"<<endl;
		return;
	}
	cout<<a<<"入栈"<<endl;
	arr[index++] = a;
}

void pop(int arr[],int &index)
{
	if(index == 0)
	{
		cout<<"栈已空,不可出栈"<<endl;
		return;
	}
	cout<<arr[--index]<<"出栈"<<endl;
}
int main()
{

	int arr[length]  ;

	int index = 0;
	push(arr,index);
	print(arr,index);
	push(6,arr,index);
	print(arr,index);
	pop(arr,index);
	print(arr,index);
	push(2,arr,index);
	print(arr,index);
	push(2,arr,index);
	print(arr,index);
	push(2,arr,index);
	print(arr,index);
	pop(arr,index);
	pop(arr,index);
	pop(arr,index);
	pop(arr,index);
	system("pause");
	return 0;
}

(4) la salida

Aquí Insertar imagen Descripción

array 2. cola

(1) Análisis

1. Definir el número de nuevo puntero al final de la matriz se añadió a poner la posición del punto 0 de inicio, el puntero a la posición deseada define comenzar recoger número en la matriz, sino también un punto de inicio a 0, se define para el registro de tamaño de la cola longitud, comenzando conjunto a 0;
2. cuando el tamaño de <la longitud total de la matriz, se puede añadir la matriz, además de un extremo después de, el tamaño más uno, cuando el tamaño! = 0, puede recoger un número, iniciar una más, tamaño menos uno.
3 (antes de la liberación Guoshu) Si el extremo punto final de la matriz, pero el tamaño es menor que la longitud total, se establece en 0. extremo continúe añadiendo número; mismo modo, si el inicio al final, pero el tamaño! = 0, la liberación puede continuar, comenzar de cero.
Consejos ※ : ciclo sintiendo es equivalente a una matriz, pero sólo si las condiciones que se deben cumplir en tamaño. principio y fin son independientes y no relacionado con el tamaño.

(2) el código de núcleo

① añadir datos

Experta usando ternaria operador puede sustituir a la relativamente simple si-else

void add_num(int arr[],int &end,int &size,int num)
{
	if(size == length)
	{
		cout<<"队列已满,不可添加!"<<endl;
		return;
	}
	
	arr[end] = num;
	size++;
	end = end == length - 1 ? 0 : end + 1;



	cout<<"入: "<<num<<endl;;

}

② datos de liberación

void sub_num(int arr[],int &start,int &size)
{
	if(size == 0)
	{
		cout<<"队列已空,不可出!"<<endl;
		return;
		
	}
	cout<<"出:"<<arr[start]<<endl;
	size--;
	start = start == length - 1 ? 0 : start+1;
}

③ cola de salida

void print(int arr[],int start,int size)
{
	if(size == 0)
	{
		cout<<"队列无元素"<<endl;
		return;
	}
		
	cout<<"队列为:";
	while(size != 0)
	{
		cout<<arr[start]<<" "; 
		start = start == length - 1 ? 0 : start+1;
		size--;

	}
	cout<<endl;
}

(3) código completo

#include<iostream>
#include<time.h>
#define length  3
using namespace std;

void print(int arr[],int start,int size)
{
	if(size == 0)
	{
		cout<<"队列无元素"<<endl;
		return;
	}
		
	cout<<"队列为:";
	while(size != 0)
	{
		cout<<arr[start]<<" "; 
		start = start == length - 1 ? 0 : start+1;
		size--;

	}
	cout<<endl;
}
void add_num(int arr[],int &end,int &size,int num)
{
	if(size == length)
	{
		cout<<"队列已满,不可添加!"<<endl;
		return;
	}
	
	arr[end] = num;
	size++;
	end = end == length - 1 ? 0 : end + 1;



	cout<<"入: "<<num<<endl;;

}

void sub_num(int arr[],int &start,int &size)
{
	if(size == 0)
	{
		cout<<"队列已空,不可出!"<<endl;
		return;
		
	}
	cout<<"出:"<<arr[start]<<endl;
	size--;
	start = start == length - 1 ? 0 : start+1;
}

int main()
{
	int arr[length];
	int size = 0;
	int end = 0;
	int start = 0;
	add_num(arr,end,size,6);
	print(arr,start,size);
	add_num(arr,end,size,3);
	print(arr,start,size);
	add_num(arr,end,size,4);
	print(arr,start,size);

	sub_num(arr,start,size);
	print(arr,start,size);

	add_num(arr,end,size,9);
	print(arr,start,size);
	add_num(arr,end,size,0);
	print(arr,start,size);

	sub_num(arr,start,size);
	print(arr,start,size);
	sub_num(arr,start,size);
	print(arr,start,size);
	sub_num(arr,start,size);
	print(arr,start,size);
	sub_num(arr,start,size);


	system("pause");
	return 0;
}

(4) Resultados de salida

Aquí Insertar imagen Descripción

Publicado 51 artículos originales · ganado elogios 1 · vistas 1392

Supongo que te gusta

Origin blog.csdn.net/shi_xiao_xuan/article/details/103567856
Recomendado
Clasificación