您的位置:首页 > 编程语言 > C语言/C++

顺序栈的C语言实现

2006-10-31 16:31 246 查看
顺序栈的C语言实现

// 程 式 名: SeqStack.c
// 程式功能: 顺序栈的实现
// 功能描述: 置栈空、判断栈空、判断栈满、压栈、出栈、取栈顶元素

#include <stdio.h>
#include <stdlib.h> // 包含exit()
#define StackSize 100 // 假定与分配的栈空间最大为100个元素
typedef char DataType; // 假定栈元素的数据类型为字符
typedef struct{
DataType data[StackSize];
int top;
} SeqStack;

// 置栈空
void Initial(SeqStack *s)
{
s->top = -1; // 数组下标从0开始
}

// 判断栈空
int IsEmpty(SeqStack *s)
{
return s->top == -1;
}

// 判断栈满
int IsFull(SeqStack *s)
{
return s->top == StackSize - 1;
}

// 压栈
void Push(SeqStack *s, DataType x)
{
if (IsFull(s))
{
printf("栈上溢!/n");
exit(1); // 退出运行
}
s->data[++s->top] = x; // 栈顶指针s->top加1后将X入栈
}

// 出栈
DataType Pop(SeqStack *s)
{
if (IsEmpty(s))
{
printf("栈下溢!/n");
exit(1); // 退出运行
}
return s->data[s->top--]; // 取当前栈顶元素后栈顶指针s->top减1
}

// 取栈顶元素
DataType Top(SeqStack *s)
{
if (IsEmpty(s))
{
printf("栈下溢!/n");
exit(1); // 退出运行
}
return s->data[s->top]; // 取当前栈顶元素
}

// 程序入口函数
void main()
{
SeqStack s; // 定义一个顺序栈
DataType first, sec; // 定义两个数据类型变量
Initial(&s); // 初始化栈为空
Push(&s, 'g'); // 压栈
Push(&s, 'n'); // 压栈
first = Top(&s); // 取栈顶元素
Pop(&s); // 出栈
sec = Top(&s); // 取栈顶元素
printf("%c%c/n", first, sec); // 栈的后进先出
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: