利用“数组”作为存储结构方法实现“堆栈”的基本操作,用swich函数实现。包括:创建堆栈、入栈、出栈、空栈、满栈、将一组输入的数据逆序输出、对输入的一组“字符串”判断是否“回文”。
时间: 2023-11-05 21:00:22 浏览: 88
以下是利用数组作为存储结构方法实现堆栈的基本操作的代码(C语言):
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10 // 定义堆栈的最大容量
int top = -1; // 栈顶指针
int stack[MAXSIZE]; // 堆栈数组
// 创建堆栈
void createStack() {
top = -1;
}
// 判断堆栈是否为空
int isEmpty() {
if (top == -1) {
return 1;
} else {
return 0;
}
}
// 判断堆栈是否已满
int isFull() {
if (top == MAXSIZE - 1) {
return 1;
} else {
return 0;
}
}
// 入栈
void push(int data) {
if (isFull()) {
printf("堆栈已满,无法入栈\n");
} else {
top++;
stack[top] = data;
}
}
// 出栈
int pop() {
int data;
if (isEmpty()) {
printf("堆栈为空,无法出栈\n");
return -1;
} else {
data = stack[top];
top--;
return data;
}
}
// 将一组输入的数据逆序输出
void reverse() {
int data;
printf("请输入一组数据,以-1结束:\n");
while (1) {
scanf("%d", &data);
if (data == -1) {
break;
} else {
push(data);
}
}
printf("逆序输出堆栈中的数据:");
while (!isEmpty()) {
printf("%d ", pop());
}
printf("\n");
}
// 对输入的一组字符串判断是否回文
void palindrome() {
char str[MAXSIZE];
int i, len;
printf("请输入一个字符串:\n");
scanf("%s", str);
len = strlen(str);
for (i = 0; i < len; i++) {
push(str[i]);
}
for (i = 0; i < len; i++) {
if (str[i] != pop()) {
printf("该字符串不是回文\n");
return;
}
}
printf("该字符串是回文\n");
}
int main() {
int choice, data;
while (1) {
printf("\n");
printf("1. 创建堆栈\n");
printf("2. 入栈\n");
printf("3. 出栈\n");
printf("4. 判断是否为空栈\n");
printf("5. 判断是否为满栈\n");
printf("6. 将一组输入的数据逆序输出\n");
printf("7. 对输入的一组字符串判断是否回文\n");
printf("8. 退出\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
createStack();
printf("堆栈已创建\n");
break;
case 2:
printf("请输入要入栈的数据:");
scanf("%d", &data);
push(data);
printf("数据 %d 已入栈\n", data);
break;
case 3:
data = pop();
if (data != -1) {
printf("数据 %d 已出栈\n", data);
}
break;
case 4:
if (isEmpty()) {
printf("堆栈为空\n");
} else {
printf("堆栈不为空\n");
}
break;
case 5:
if (isFull()) {
printf("堆栈已满\n");
} else {
printf("堆栈未满\n");
}
break;
case 6:
reverse();
break;
case 7:
palindrome();
break;
case 8:
exit(0);
default:
printf("输入有误,请重新输入\n");
}
}
return 0;
}
```
该代码中,我们定义了一个堆栈数组 stack 和一个栈顶指针 top,以及堆栈的最大容量 MAXSIZE。在主函数中,通过一个 while 循环不断接受用户的选择,利用 switch 函数实现不同的操作。具体操作包括创建堆栈、入栈、出栈、判断是否为空栈、判断是否为满栈、将一组输入的数据逆序输出、对输入的一组字符串判断是否回文。
其中,isEmpty() 和 isFull() 函数分别用于判断堆栈是否为空和已满,push() 函数用于将数据入栈,pop() 函数用于将数据出栈,reverse() 函数用于将一组输入的数据逆序输出,palindrome() 函数用于判断输入的一组字符串是否回文。
阅读全文