Programa para invertir una array usando punteros

Requisito previo: Punteros en C/C++ Dada una array, escriba un programa para invertirla usando punteros. En este programa hacemos uso del operador *. El operador * (asterisco) denota el valor de la variable. El operador * en el momento de la declaración indica que se trata de un puntero; de lo contrario, indica el valor de la ubicación de memoria señalada por el puntero.

  • función inversa: se utiliza para invertir la array a través de punteros
  • función de intercambio: se utiliza para intercambiar dos contenidos de memoria
  • función de impresión: imprimirá la array

Enfoque: en la función inversa, tomamos dos punteros, uno que apunta al comienzo de la array y otro que apunta al final de la array. El contenido de la ubicación de memoria apuntada por estos dos punteros se intercambia y luego el valor del primer puntero aumenta y el del segundo puntero disminuye. Ejemplos:

Input : array = 2, 4, -6, 5, 8, -1
Output : reverse_array = -1, 8, 5, -6, 4, 2

Input : array = 1, 4, -6, 8, -10, -12
Output : reverse_array = -12, -10, 8, -6, 4, 1

Implementación:

CPP

// CPP program to reverse array
// using pointers
#include <iostream>
using namespace std;
 
// Function to swap two memory contents
void swap(int* a, int* b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
 
// Function to reverse the array through pointers
void reverse(int array[], int array_size)
{
 
    // pointer1 pointing at the beginning of the array
    int *pointer1 = array,
 
        // pointer2 pointing at end of the array
        *pointer2 = array + array_size - 1;
    while (pointer1 < pointer2) {
        swap(pointer1, pointer2);
        pointer1++;
        pointer2--;
    }
}
 
// Function to print the array
void print(int* array, int array_size)
{
 
    // Length pointing at end of the array
    int *length = array + array_size,
 
        // Position pointing to the beginning of the array
        *position = array;
    cout << "Array = ";
    for (position = array; position < length; position++)
        cout << *position << " ";
}
 
// Driver function
int main()
{
 
    // Array to hold the values
    int array[] = { 2, 4, -6, 5, 8, -1 };
 
    cout << "Original ";
    print(array, 6);
 
    cout << "Reverse ";
    reverse(array, 6);
    print(array, 6);
    return 0;
}
Producción

Original Array = 2 4 -6 5 8 -1 Reverse Array = -1 8 5 -6 4 2 

Complejidad de tiempo: O(N) , donde N representa el tamaño de la array dada.
Espacio auxiliar: O(1) , no se requiere espacio adicional, por lo que es una constante.

Publicación traducida automáticamente

Artículo escrito por mohitw16 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *