/*
** File name: SeqStack.h
** Author: ZhouFeng
** Date: 2012/03/26
*/
#ifndef SEQ_STACK_H
#define SEQ_STACK_H
#define MAX_SIZE 100
#define ERROR 0
#define SUCCESS 1
#define TRUE 1
#define FALSE 0
typedef int BOOL;
typedef int EleType;
typedef struct SeqStack
{
EleType _seqStack[MAX_SIZE];
int top;
}SeqStack;
void InitSeqStack(SeqStack *S);
BOOL IsStackEmpty(SeqStack *S);
int Push(SeqStack *S, EleType data);
int Pop(SeqStack *S, EleType *data);
int GetTop(SeqStack *S, EleType *data);
#endif
#include <stddef h="">
#include "SeqStack.h"
void InitSeqStack(SeqStack *S)
{
if(S == NULL)
{
return;
}
S->top = 0;
}
BOOL IsStackEmpty(SeqStack *S)
{
if(S == NULL)
{
return TRUE;
}
if(S->top > 0)
{
return FALSE;
}
else
{
return TRUE;
}
}
int Push(SeqStack *S, EleType data)
{
if(S == NULL && S->top > MAX_SIZE)
{
return ERROR;
}
S->_seqStack[S->top] = data;
++S->top;
return SUCCESS;
}
int Pop(SeqStack *S, EleType *data)
{
if(S == NULL && S->top <= 0)
{
return ERROR;
}
--S->top;
*data = S->_seqStack[S->top];
return SUCCESS;
}
int GetTop(SeqStack *S, EleType *data)
{
if(S == NULL && S->top <= 0)
{
return ERROR;
}
*data = S->_seqStack[S->top - 1];
return SUCCESS;
}
</stddef>
分享到:
相关推荐
- **功能描述**:此函数用于清除顺序堆栈中的所有数据元素,使得堆栈变为初始状态。 - **参数解释**:参数`S`为指向堆栈的指针,采用指针参数的原因在于需要修改堆栈的状态,而不仅仅是返回值或读取值。 - **实现...
接下来,我们可以实现两种堆栈的版本:基于数组的顺序堆栈(SeqStack)和基于链表的链式堆栈(LinkStack)。这里我们专注于顺序堆栈的实现。 顺序堆栈通常使用数组作为底层数据结构。在C#中,`SeqStack<T>`类实现了...
3. **代码实现**:定义结构体`SeqStack`表示顺序循环队列,包含数组和计数器。实现相应的队列操作函数,如`StackNotEmpty()`、`StackPush()`(对应入队列)、`StackPop()`(对应出队列)等。 4. **测试**:设计...
// 顺序堆栈 ``` 其中 `StackSize` 定义了堆栈的最大容量,默认为 4。 #### 关键函数解析 - **初始化堆栈 (`Initial`)**: - 初始化堆栈,将堆栈顶位置 `top` 设置为 `-1`,表示堆栈为空。 - **判断堆栈是否为...
在本篇内容中,我们将深入探讨顺序栈的建立、使用,以及其核心操作——入栈、出栈、获取栈顶元素和判断栈是否为空。 #### 二、顺序栈的关键操作 1. **初始化**:初始化一个顺序栈通常意味着设置一个固定大小的数组...
【互联网技术】中的数据结构——堆栈与队列 在计算机科学中,堆栈和队列是两种重要的数据结构,广泛应用于互联网技术的各种场景。它们是处理数据进出的线性结构,具有特定的操作规则。 **堆栈(Stack)**: 堆栈是...
3. **顺序堆栈类的部分成员方法定义**:顺序堆栈是一种基于数组实现的堆栈,支持入栈和出栈操作。此处展示了顺序堆栈的构造方法及初始化过程。 ```java public class SeqStack implements Stack { public ...
第 3 章 特殊线性表——栈、队列和串 本章主要介绍了三种特殊线性表:栈、队列和串,它们在数据结构中占有重要地位,特别是在处理特定问题时。首先我们详细讨论栈,它是一种具有后进先出(LIFO)特性的数据结构。 ...
在本文中,我们将深入探讨数据结构中的一个重要概念——栈,以及它的应用。 栈(Stack)是一种特殊的线性表,其特点是仅允许在表的一端(栈顶)进行插入和删除操作。这种特性使得栈遵循“后进先出”(Last In, ...
`SeqStack`类用于处理产生式的顺序和堆栈操作。 2. **算法实现**:设计递归函数,用于计算`FIRST(X)`集合,确保每次调用都能根据当前产生式更新相应的集合。同时,使用循环结构遍历所有非终结符,确保每个非终结符...