编写一个程序,使用顺序栈,将字符’a、c、b、d、f、e、'g依次压入栈中 (1)输出栈中各元素的内容。 (2)将栈顶元素出栈,输出栈中剩下的元素的内容。” (3)将字符火入栈,输出栈中元素的内容。
时间: 2024-03-13 11:44:56 浏览: 60
栈的顺序实现,入栈、出栈等
好的,我来一步步解答这个问题:
1. 首先,我们需要定义一个顺序栈的数据结构,包括栈的最大容量、栈顶指针和存储元素的数组。这里我们假设栈的最大容量为10,代码如下:
```c
#define MAX_SIZE 10
typedef struct {
char data[MAX_SIZE];
int top;
} SeqStack;
```
2. 然后,我们需要实现栈的初始化、判空、判满、入栈、出栈和打印栈中元素等操作的函数。代码如下:
```c
void initStack(SeqStack *s) {
s->top = -1;
}
int isEmpty(SeqStack s) {
return s.top == -1;
}
int isFull(SeqStack s) {
return s.top == MAX_SIZE - 1;
}
void push(SeqStack *s, char x) {
if (isFull(*s)) {
printf("Stack is full!\n");
return;
}
s->top++;
s->data[s->top] = x;
}
char pop(SeqStack *s) {
if (isEmpty(*s)) {
printf("Stack is empty!\n");
return '\0';
}
char x = s->data[s->top];
s->top--;
return x;
}
void printStack(SeqStack s) {
if (isEmpty(s)) {
printf("Stack is empty!\n");
return;
}
printf("Stack elements: ");
for (int i = 0; i <= s.top; i++) {
printf("%c ", s.data[i]);
}
printf("\n");
}
```
3. 接下来,我们就可以按照题目要求,依次将字符'a'、'c'、'b'、'd'、'f'、'e'、'g'入栈,并输出栈中的元素内容。代码如下:
```c
int main() {
SeqStack s;
initStack(&s);
push(&s, 'a');
push(&s, 'c');
push(&s, 'b');
push(&s, 'd');
push(&s, 'f');
push(&s, 'e');
push(&s, 'g');
printStack(s);
return 0;
}
```
输出结果为:
```
Stack elements: a c b d f e g
```
4. 然后,我们需要将栈顶元素出栈,并输出栈中剩下的元素内容。代码如下:
```c
int main() {
SeqStack s;
initStack(&s);
push(&s, 'a');
push(&s, 'c');
push(&s, 'b');
push(&s, 'd');
push(&s, 'f');
push(&s, 'e');
push(&s, 'g');
char x = pop(&s);
printf("Pop element: %c\n", x);
printStack(s);
return 0;
}
```
输出结果为:
```
Pop element: g
Stack elements: a c b d f e
```
5. 最后,我们需要将字符'火'入栈,并输出栈中元素内容。代码如下:
```c
int main() {
SeqStack s;
initStack(&s);
push(&s, 'a');
push(&s, 'c');
push(&s, 'b');
push(&s, 'd');
push(&s, 'f');
push(&s, 'e');
push(&s, 'g');
push(&s, '火');
printStack(s);
return 0;
}
```
输出结果为:
```
Stack elements: a c b d f e g 火
```
至此,该程序的所有功能都已实现。希望能对你有所帮助!
阅读全文