链栈实现字符串的逆序显示
时间: 2024-11-09 07:24:32 浏览: 30
链栈(Linked Stack)是一种基于链表的数据结构,用于实现后进先出(LIFO,Last In First Out)的行为。为了实现字符串的逆序显示,我们可以创建一个链栈,在遍历字符串的过程中将每个字符依次入栈,然后从栈顶开始取出并输出字符,从而达到逆序的效果。
以下是一个简单的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈节点结构
typedef struct Node {
char data;
struct Node* next;
} Node;
// 初始化链栈
Node* createStack() {
return (Node*)malloc(sizeof(Node));
}
// 入栈操作
void push(Node** top, char c) {
Node* newNode = createStack();
newNode->data = c;
newNode->next = *top;
*top = newNode;
}
// 出栈操作(获取栈顶元素)
char pop(Node** top) {
if (*top == NULL) {
printf("Stack is empty.\n");
return '\0';
}
char data = (*top)->data;
Node* temp = *top;
*top = (*top)->next;
free(temp);
return data;
}
// 逆序打印字符串
void reversePrintString(char* str) {
Node* top = NULL;
for (int i = strlen(str) - 1; i >= 0; i--) {
push(&top, str[i]);
}
while (top != NULL) {
char c = pop(&top);
printf("%c", c);
}
}
int main() {
char str[] = "Hello, World!";
reversePrintString(str);
return 0;
}
```
在这个示例中,我们首先定义了一个链栈结构,包括数据域`data`和指向下一个节点的指针`next`。`createStack()`函数用于初始化一个空节点,`push()`函数用于将字符入栈,`pop()`函数用于移除并返回栈顶元素。`reversePrintString()`函数则是核心部分,它先倒序遍历字符串并将字符逐个压入栈,再从栈顶开始弹出并输出。
运行这个程序,你会看到"!dlroW ,olleH"这样的逆序字符串。
阅读全文