顺序栈的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); // 栈的后进先出
}
// 程 式 名: 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); // 栈的后进先出
}
相关文章推荐
- C语言 数组的顺序表示与实现 数据结构
- 动态顺序表的实现(c语言版本)
- 顺序线性表的实现及操作(C语言实现)
- 顺序表、单链表——C语言实现及其比较
- 顺序线性表——通过存放地址,实现顺序存储--C语言简单实现
- 顺序表的C语言实现
- 注意顺序____用C语言实现函数void * memmove(void *dest, const void *src, size_t n)
- C语言实现顺序表的基本操作
- 单链表顺序存储相关操作的c语言实现
- 顺序栈的实现(C语言)
- C语言实现顺序队列的初始化、入队、出队等操作(三)
- 顺序循环队列的c语言实现
- (C语言)单链表的顺序实现(数据结构一)
- C语言实现,顺序队列,循环队列,和栈!
- C语言顺序表的实现
- 顺序栈的实现(C语言)
- C语言使用顺序表实现对学生信息的管理系统
- 数据结构——顺序表(C语言实现)
- 线性表的顺序表示(C语言实现)
- 动态顺序表的相关功能——C语言实现