用数据结构实现顺序栈将字符串zhangsan,wangwu,lisi入栈再依次弹出
时间: 2024-10-12 07:04:29 浏览: 27
在Python中,我们可以使用列表这种简单数据结构来实现一个基本的顺序栈(也称为动态数组)。首先,我们创建一个空列表,然后逐个将字符串"zhangsan", "wangwu", "lisi"压入栈中:
```python
class Stack:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def pop(self):
if not self.is_empty():
return self.stack.pop()
else:
return None
def is_empty(self):
return len(self.stack) == 0
# 创建一个顺序栈实例
stack = Stack()
# 入栈操作
stack.push("zhangsan")
stack.push("wangwu")
stack.push("lisi")
# 弹出并打印元素
while not stack.is_empty():
print(stack.pop())
```
当你运行这段代码时,会依次打印出:"zhangsan", "wangwu", "lisi",因为每次`pop()`都会从栈顶取出并删除最后一个添加的元素。
相关问题
数据结构c语言顺序栈将字符串zhangsan,wangwu,lisi入栈再依次弹出
在C语言中,我们可以使用数组作为基础数据结构来创建一个简单的顺序栈(也叫线性栈),用于存储字符串。这里是一个基本的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 5 // 栈的最大容量
typedef struct {
char stack[MAX_SIZE][50]; // 字符串数组,每个元素足够大存储字符串
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 入栈操作
void push(Stack *s, const char* str) {
if (is_full(s)) {
printf("Stack overflow! Can't push '%s'\n", str);
return;
}
strcpy(s->stack[++s->top], str);
}
// 出栈操作并返回字符串
char* pop(Stack *s) {
if (is_empty(s)) {
printf("Stack underflow! No element to pop.\n");
return NULL;
}
char* temp = s->stack[s->top];
s->top--;
return temp;
}
int main() {
Stack s;
init(&s);
push(&s, "zhangsan");
push(&s, "wangwu");
push(&s, "lisi");
while (!is_empty(&s)) {
char* popped_str = pop(&s);
printf("Popped string: %s\n", popped_str);
}
return 0;
}
```
在这个例子中,我们首先初始化一个栈,然后按照顺序添加字符串"zhangsan", "wangwu", 和 "lisi"。每次出栈都会打印出被弹出的字符串,直到栈为空。
题目描述 字符串的合并与分隔,在网页编程中有非常重要。下面请你设计一个字符串分隔函数split,其功能是将一个以#为分隔标志的英文字符串,分隔到多个字符串,并保存到二维数组中。例如将英文字符串"zhangsan#lisi#wangwu#"分隔成3个字符串"zhangsan"、"lisi"、"wangwu"。 输入 一个以#为分隔标志的英文字符串 输出 第1行是1个整数n,表示分隔后的字符串个数 接下来n行,表示分隔后的n个字符串,每个字符串1行 样例输入 zhangsan#lisi#wangwu# 样例输出 3 zhangsan lisi wangwu C语言完成
以下是C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char arr[20][20];
int n = 0;
scanf("%s", str);
char* token = strtok(str, "#");
while (token != NULL) {
strcpy(arr[n], token);
n++;
token = strtok(NULL, "#");
}
printf("%d\n", n);
for (int i = 0; i < n; i++) {
printf("%s\n", arr[i]);
}
return 0;
}
```
我们首先定义一个字符数组str来存储输入的字符串,再定义一个二维字符数组arr来存储分隔后的字符串。接着,我们使用strtok函数来分隔字符串。strtok函数可以根据指定的分隔符将字符串分割成若干个子字符串,从而实现字符串分隔的功能。我们将分隔后的每个子字符串存储到二维字符数组arr中,并统计分隔后的字符串个数n。
最后,我们输出分隔后的字符串个数n以及分隔后的每个字符串即可。
阅读全文