C语言怎么利用栈来实现数组的逆序

712
2024/5/4 9:48:10
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

可以利用栈来实现数组的逆序操作,具体步骤如下:

  1. 首先定义一个栈结构,包括栈顶指针和栈的容量。
  2. 将数组的元素依次压入栈中。
  3. 然后依次从栈中弹出元素,并将其放入数组中,即实现了数组的逆序操作。

以下是一个示例代码:

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

#define MAX_SIZE 100

typedef struct {
    int top;
    int capacity;
    int *array;
} Stack;

Stack* createStack(int size) {
    Stack *stack = (Stack*)malloc(sizeof(Stack));
    stack->top = -1;
    stack->capacity = size;
    stack->array = (int*)malloc(sizeof(int) * size);
    return stack;
}

void push(Stack *stack, int data) {
    stack->array[++stack->top] = data;
}

int pop(Stack *stack) {
    return stack->array[stack->top--];
}

void reverseArray(int arr[], int size) {
    Stack *stack = createStack(size);

    for (int i = 0; i < size; i++) {
        push(stack, arr[i]);
    }

    for (int i = 0; i < size; i++) {
        arr[i] = pop(stack);
    }

    free(stack->array);
    free(stack);
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);

    reverseArray(arr, size);

    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

以上代码通过利用栈实现了数组的逆序操作,输出结果为:5 4 3 2 1。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: c语言long的用法是什么