用顺序栈将一组整数逆置
时间: 2024-02-01 15:02:56 浏览: 120
可以使用顺序栈来实现整数的逆置。具体实现步骤如下:
1. 定义一个顺序栈结构,包括栈顶指针和一个存储整数的数组。
2. 将整数依次入栈,直到入栈完毕。
3. 定义一个新的数组,用于存储逆置后的整数。
4. 从栈顶开始依次出栈,将出栈的整数存储到新数组中。
5. 将新数组中的整数赋值回原数组中,即完成了整数的逆置。
以下是使用C语言实现的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int top;
int data[MAX_SIZE];
} Stack;
// 初始化栈
void initStack(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int isFull(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 入栈操作
void push(Stack *s, int x) {
if (isFull(s)) {
printf("栈已满,无法入栈!\n");
return;
}
s->data[++s->top] = x;
}
// 出栈操作
int pop(Stack *s) {
if (isEmpty(s)) {
printf("栈为空,无法出栈!\n");
return -1;
}
return s->data[s->top--];
}
// 逆置整数
void reverse(int a[], int n) {
Stack s;
initStack(&s);
for (int i = 0; i < n; i++) {
push(&s, a[i]);
}
for (int i = 0; i < n; i++) {
a[i] = pop(&s);
}
}
// 输出数组元素
void printArray(int a[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
int main() {
int a[] = {1, 2, 3, 4, 5};
int n = sizeof(a) / sizeof(int);
printf("原数组:");
printArray(a, n);
reverse(a, n);
printf("逆置后的数组:");
printArray(a, n);
return 0;
}
```
运行结果如下:
```
原数组:1 2 3 4 5
逆置后的数组:5 4 3 2 1
```
阅读全文