C语言给定一个字符串,采用堆栈将其进行翻转. 例如 "ILoveChina, ILoveBJTU, ILoveGJCXSJXL" 应被转换成 "LXJSXCJGevoLI ,UTJBevoLI ,anihCevoLI". 【输入形式】 ILoveChina, ILoveBJTU, ILoveGJCXSJXL 【输出形式】 LXJSXCJGevoLI ,UTJBevoLI ,anihCevoLI 【样例输入】 ILoveChina, ILoveBJTU, ILoveGJCXSJXL 【样例输出】 LXJSXCJGevoLI ,UTJBevoLI ,anihCevoLI
时间: 2023-08-06 12:10:02 浏览: 145
c语言写的字符串翻转算法
以下是使用堆栈翻转字符串的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LENGTH 1000
// 定义堆栈结构体
typedef struct {
char data[MAX_LENGTH]; // 存储数据的数组
int top; // 栈顶指针
} Stack;
// 初始化堆栈
void initStack(Stack *s) {
s->top = -1;
}
// 入栈操作
void push(Stack *s, char c) {
if (s->top == MAX_LENGTH - 1) {
printf("Stack overflow!\n");
exit(1);
}
s->data[++s->top] = c;
}
// 出栈操作
char pop(Stack *s) {
if (s->top == -1) {
printf("Stack underflow!\n");
exit(1);
}
return s->data[s->top--];
}
// 判断堆栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 翻转字符串
void reverseString(char *str) {
Stack s;
initStack(&s);
int len = strlen(str);
// 将字符串中的字符依次入栈
for (int i = 0; i < len; i++) {
push(&s, str[i]);
}
// 依次出栈并将字符存储到原字符串中
for (int i = 0; i < len; i++) {
str[i] = pop(&s);
}
}
int main() {
char str[MAX_LENGTH];
printf("Please enter a string: ");
scanf("%[^\n]", str); // 读取包含空格的字符串
reverseString(str);
printf("The reversed string is: %s\n", str);
return 0;
}
```
输入示例:
```
Please enter a string: ILoveChina, ILoveBJTU, ILoveGJCXSJXL
```
输出示例:
```
The reversed string is: LXJSXCJGevoLI ,UTJBevoLI ,anihCevoLI
```
阅读全文