用C语言编写设有三个元素XYZ顺序进栈(进的过程中允许出栈),若出栈顺序为YZX,请用链栈实现这一过程
时间: 2024-03-13 08:42:23 浏览: 129
好的,以下是用链栈实现XYZ顺序进栈,出栈顺序为YZX的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
char data;
struct Node* next;
} Node;
typedef struct {
Node* top;
} Stack;
void initStack(Stack* s) {
s->top = NULL;
}
int isEmpty(Stack* s) {
return s->top == NULL;
}
void push(Stack* s, char data) {
Node* node = (Node*) malloc(sizeof(Node));
node->data = data;
node->next = s->top;
s->top = node;
}
char pop(Stack* s) {
if (isEmpty(s)) {
printf("栈已空,无法继续出栈!\n");
exit(1);
}
char data = s->top->data;
Node* node = s->top;
s->top = s->top->next;
free(node);
return data;
}
void printStack(Stack* s) {
printf("栈中元素为:");
Node* node = s->top;
while (node != NULL) {
printf("%c ", node->data);
node = node->next;
}
printf("\n");
}
int main() {
Stack s;
initStack(&s);
push(&s, 'X');
printStack(&s);
push(&s, 'Y');
printStack(&s);
push(&s, 'Z');
printStack(&s);
char c1 = pop(&s);
printf("出栈元素为:%c\n", c1);
char c2 = pop(&s);
printf("出栈元素为:%c\n", c2);
char c3 = pop(&s);
printf("出栈元素为:%c\n", c3);
return 0;
}
```
这个程序中,我们使用了链栈来实现栈的基本操作。进栈时,我们按照XYZ的顺序进栈,出栈时,我们需要按照YZX的顺序出栈。由于栈是后进先出的,所以我们需要先将X、Y、Z按照Z、Y、X的顺序出栈,才能得到YZX的顺序。
阅读全文