c语言实现顺序栈的创建、入栈、出栈、取栈顶元素、遍历的完整代码
时间: 2023-09-30 21:05:41 浏览: 208
用c语言来实现顺序栈
5星 · 资源好评率100%
以下是C语言实现顺序栈的完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义栈的最大容量
typedef int ElemType; // 栈元素类型
typedef struct {
ElemType data[MAXSIZE]; // 存储栈元素
int top; // 栈顶指针
} SqStack;
// 初始化栈
void InitStack(SqStack *s) {
s->top = -1;
}
// 判断栈是否为空
int IsEmpty(SqStack s) {
return s.top == -1;
}
// 判断栈是否已满
int IsFull(SqStack s) {
return s.top == MAXSIZE - 1;
}
// 入栈
int Push(SqStack *s, ElemType e) {
if (IsFull(*s)) // 栈已满,无法入栈
return 0;
s->data[++s->top] = e; // 栈顶指针加1,将元素e入栈
return 1;
}
// 出栈
int Pop(SqStack *s, ElemType *e) {
if (IsEmpty(*s)) // 栈为空,无法出栈
return 0;
*e = s->data[s->top--]; // 将栈顶元素赋值给e,栈顶指针减1
return 1;
}
// 取栈顶元素
int GetTop(SqStack s, ElemType *e) {
if (IsEmpty(s)) // 栈为空,无栈顶元素
return 0;
*e = s.data[s.top]; // 将栈顶元素赋值给e
return 1;
}
// 遍历栈
void TraverseStack(SqStack s) {
int i;
printf("栈中元素为:");
for (i = s.top; i >= 0; i--) // 从栈顶到栈底依次输出元素
printf("%d ", s.data[i]);
printf("\n");
}
int main() {
SqStack s;
ElemType e;
int i;
InitStack(&s); // 初始化栈
printf("入栈操作:\n");
printf("请输入要入栈的元素,以-1结束:");
scanf("%d", &e);
while (e != -1) {
if (!Push(&s, e)) // 入栈失败
printf("栈已满,%d未入栈!\n", e);
else
printf("%d已入栈\n", e);
scanf("%d", &e);
}
printf("\n出栈操作:\n");
while (!IsEmpty(s)) {
if (!Pop(&s, &e)) // 出栈失败
printf("栈已空,无法出栈!\n");
else
printf("%d已出栈\n", e);
}
printf("\n遍历栈操作:\n");
for (i = 1; i <= 5; i++)
Push(&s, i); // 入栈操作
TraverseStack(s); // 遍历栈
return 0;
}
```
以上代码实现了顺序栈的创建、入栈、出栈、取栈顶元素和遍历等基本操作。
阅读全文