写一个使用栈来解决的c语言代码(加注释)
时间: 2023-04-03 22:01:52 浏览: 106
栈的C语言实现
好的,我可以回答这个问题。以下是一个使用栈来解决的c语言代码,用于将一个字符串反转:
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
// 定义栈结构体
typedef struct {
char data[MAX_SIZE];
int top;
} 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, char c) {
if (isFull(s)) {
printf("Stack is full.\n");
return;
}
s->top++;
s->data[s->top] = c;
}
// 出栈
char pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty.\n");
return '\';
}
char c = s->data[s->top];
s->top--;
return c;
}
// 反转字符串
void reverseString(char *str) {
Stack s;
initStack(&s);
int len = strlen(str);
// 将字符串入栈
for (int i = ; i < len; i++) {
push(&s, str[i]);
}
// 出栈并输出字符
for (int i = ; i < len; i++) {
str[i] = pop(&s);
}
}
int main() {
char str[MAX_SIZE];
printf("Please input a string: ");
scanf("%s", str);
reverseString(str);
printf("The reversed string is: %s\n", str);
return ;
}
阅读全文