Utilice matriz de tamaño fijo de las estructuras para lograr cola 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
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;
}