三、数据结构基础之顺序栈C语言实现
2012-05-05 21:11
666 查看
/* * 三、数据结构基础之顺序栈 * 顺序栈数据结构(结构的定义+在此结构上的操作) * --- 2012年4月23日 ---by lee */ #ifndef _SEQUENTIAL_STACK_H #define _SEQUENTIAL_STACK_H #include "Utility.h" //宏定义栈的空间大小 #define STACKSIZE 20 //类型定义 typedef int DataType; //声明顺序栈类型结构体 typedef struct _SqStack { DataType data[STACKSIZE];//存放数据元素的数组 int top;//指向栈顶位置 } SqStack; //对顺序栈的基本操作 void InitStack(SqStack* stack);//初始化,构造空栈 int IsStackEmpty(SqStack* stack);//判断栈是否为空 int IsStackFull(SqStack* stack);//判断栈是否为满 void Push(SqStack* stack, DataType x);//元素x入栈 DataType Pop(SqStack* stack);//栈顶出栈,返回栈顶元素 DataType StackTop(SqStack* stack);//取栈顶元素 //初始化,构造空栈 void InitStack(SqStack* stack) { stack->top=-1; } //判断栈是否为空 int IsStackEmpty(SqStack* stack) { return (stack->top==-1); } //判断栈是否为满 int IsStackFull(SqStack* stack) { return (stack->top==STACKSIZE-1); } //元素x入栈 void Push(SqStack* stack, DataType x) { //首先判断栈是否已满 if(IsStackFull(stack)) Error("Stack is full"); //栈顶指针加1 ++stack->top; stack->data[stack->top]=x; } //出栈,返回栈顶元素 DataType Pop(SqStack* stack) { //出栈前,判断栈是否为空 if(IsStackEmpty(stack)) Error("Stack is empty"); //保存栈顶元素 DataType ret=stack->data[stack->top]; stack->top--;//栈顶指针减1 return ret; } //取栈顶元素 DataType StackTop(SqStack* stack) { if(IsStackEmpty(stack)) Error("Stack is empty"); return stack->data[stack->top]; } #endif //测试代码 /* SqStack s; InitStack(&s); Push(&s,1); Push(&s,2); Push(&s,3); printf("stack top: %d\n",Pop(&s)); printf("stack top: %d\n",Pop(&s)); */
相关文章推荐
- 一、数据结构基础之顺序表C语言实现
- [C语言][数据结构]基础的线性表的顺序表示和实现
- 一、数据结构基础之顺序表C语言实现
- 七、数据结构基础之顺序串C语言实现
- 数据结构基础(1)--数组C语言实现--动态内存分配
- C语言实现顺序表-数据结构
- 数据结构基础8_循环队列(顺序实现)
- 数据结构基础(3)---C语言实现单链表
- 数据结构基础(4)C语言实现栈--链式存储(动态栈)
- 数据结构 学习笔记之:顺序栈的C语言实现
- [c语言]数据结构 顺序表的实现
- 数据结构基础(3)---C语言实现单链表
- 数据结构之---c语言实现栈的顺序存储
- 数据结构(严蔚敏)之一——顺序表之c语言实现
- 数据结构基础5_顺序栈的实现
- 数据结构基础(1)--数组C语言实现--动态内存分配(跟风追逐,加强突击)
- [数据结构]顺序表的C语言简单实现
- 基础数据结构:顺序表、链表——Python实现
- 二、数据结构基础之单链表C语言实现
- 数据结构基础之循环队列C语言实现