push字符a, b, c,输入0时结束程序并pop栈顶元素并打印。采用链式存储实现栈的初始化、入栈、出栈操作。
时间: 2024-03-10 20:45:25 浏览: 114
栈 的 实 现 与 应 用.docx
好的,这是一个栈的基本操作,我可以帮你解答。
首先,我们需要定义一个链式栈的结构体,包括节点的值和指向下一个节点的指针:
```c
typedef struct stackNode {
char data;
struct stackNode* next;
} StackNode;
typedef struct {
StackNode* top;
} LinkedStack;
```
然后,我们需要实现栈的初始化、入栈、出栈操作:
```c
void initStack(LinkedStack* stack) {
stack->top = NULL;
}
void push(LinkedStack* stack, char data) {
StackNode* node = (StackNode*)malloc(sizeof(StackNode));
node->data = data;
node->next = stack->top;
stack->top = node;
}
char pop(LinkedStack* stack) {
if (stack->top == NULL) {
printf("Stack is empty!");
return 0;
}
StackNode* node = stack->top;
stack->top = node->next;
char data = node->data;
free(node);
return data;
}
```
最后,我们可以按照题目要求进行操作:
```c
int main() {
LinkedStack stack;
initStack(&stack);
char data;
do {
scanf("%c", &data);
if (data != '0') {
push(&stack, data);
}
} while (data != '0');
while (stack.top != NULL) {
printf("%c ", pop(&stack));
}
return 0;
}
```
这样就完成了栈的初始化、入栈、出栈操作,并且根据输入输出符合题目要求的结果。
阅读全文