1使用动态分配内存的形式,构建一个其中元素数据类型为float的栈。 2.将数据314.5.26.7.89.4.67.5.2.7.9.5.5依次压入栈中。 3.每次压栈完成后,立即获取栈顶元素并输出。 4.使用循环的形式进行出栈,直至栈为空。用c语言
时间: 2024-10-24 11:02:17 浏览: 45
在C语言中,我们可以使用结构体定义一个动态数组作为栈,并使用`malloc()`函数动态分配内存。首先,我们需要定义一个包含`float`类型的结构体和一些栈操作相关的函数。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义栈结构体
typedef struct {
float* elements; // 存储float的指针
size_t top; // 栈顶位置
size_t capacity; // 栈的最大容量
} Stack;
// 初始化栈
Stack* create_stack(size_t capacity) {
Stack* stack = (Stack*) malloc(sizeof(Stack));
if (!stack) {
printf("Memory allocation failed.\n");
return NULL;
}
stack->elements = (float*) malloc(capacity * sizeof(float));
if (!stack->elements) {
free(stack);
return NULL;
}
stack->top = -1;
stack->capacity = capacity;
return stack;
}
// 压栈
void push(Stack* stack, float value) {
if (stack->top == stack->capacity - 1) {
printf("Stack is full.\n");
return;
}
stack->elements[++stack->top] = value;
printf("Pushed %f onto the stack.\n", value);
}
// 出栈并返回值
float pop(Stack* stack) {
if (stack->top == -1) {
printf("Stack is empty.\n");
return -1; // 返回一个特殊值表示空栈
}
float value = stack->elements[stack->top];
stack->top--;
return value;
}
int main() {
const size_t stack_capacity = 10;
Stack* stack = create_stack(stack_capacity);
// 压栈
for (size_t i = 0; i <= 9; ++i) {
push(stack, 314.5 + i);
}
// 循环出栈并打印
while (stack->top != -1) {
float value = pop(stack);
printf("Popped %f from the stack.\n", value);
}
// 清理内存
free(stack->elements);
free(stack);
return 0;
}
```
阅读全文
相关推荐
















