C语言编程实现一个顺序栈的各种基本运算(stacksize为5),然后设计主程序实现依次将字符串zhangsan、lisi、wangmazi、zhanglon
时间: 2024-10-22 19:26:53 浏览: 76
在C语言中,我们可以使用数组来实现一个简单的顺序栈结构。由于栈的大小固定为5,我们需要维护一个`stacksize`变量以及两个指针`top`和`base`,其中`top`指向栈顶元素的下一个位置,而`base`则是初始化后的栈底。
首先,我们定义一个结构体`StackElement`用于存储数据,以及栈的基本操作函数:
```c
#include <stdio.h>
#include <string.h>
#define stacksize 5
typedef struct {
char data[6]; // 留出足够的空间存放名字和结束符'\0'
} StackElement;
int is_empty(StackElement stack[]) {
return (top == base);
}
void push(StackElement stack[], char* str) {
if (!is_empty(stack)) {
strcpy(stack[top++].data, str); // 如果不是空栈,则复制字符串到栈顶并增加top指针
} else {
printf("Stack overflow!\n");
}
}
char pop(StackElement stack[]) {
if (is_empty(stack)) {
printf("Stack underflow!\n");
return '\0'; // 返回空字符表示栈空
} else {
return stack[--top].data; // 取出栈顶元素并减小top指针
}
}
// 主程序
int main() {
StackElement stack[stacksize];
int i;
top = base = 0; // 初始化栈为空
for (i = 0; i < 4; ++i) {
push(stack, "zhangsan"); // 将名字依次压入栈
push(stack, "lisi");
push(stack, "wangmazi");
push(stack, "zhanglon"); // 注意这里循环四次,因为有四个名字
printf("%s popped from the stack.\n", pop(stack)); // 弹出并打印栈顶元素
}
return 0;
}
```
在这个示例中,主程序会依次将四个名字压入栈,然后每次从栈顶弹出一个并打印出来。如果试图添加超过栈容量的数据或者尝试弹出空栈,将会输出错误信息。
阅读全文