`

SeqStack——顺序堆栈

 
阅读更多
/*
** 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-&gt;top = 0;
}

BOOL IsStackEmpty(SeqStack *S)
{
    if(S == NULL)
    {
	return TRUE;
    }

    if(S-&gt;top &gt; 0)
    {
	return FALSE;
    }
    else
    {
	return TRUE;
    }
	
}

int Push(SeqStack *S, EleType data)
{
    if(S == NULL &amp;&amp; S-&gt;top &gt; MAX_SIZE)
    {
	return ERROR;
    }

    S-&gt;_seqStack[S-&gt;top] = data;
    ++S-&gt;top;
    
    return SUCCESS;
}

int Pop(SeqStack *S, EleType *data)
{
    if(S == NULL &amp;&amp; S-&gt;top &lt;= 0)
    {
	return ERROR;
    }

    --S-&gt;top;
    *data = S-&gt;_seqStack[S-&gt;top];

    return SUCCESS;
}

int GetTop(SeqStack *S, EleType *data)
{
    if(S == NULL &amp;&amp; S-&gt;top &lt;= 0)
    {
	return ERROR;
    }

    *data = S-&gt;_seqStack[S-&gt;top - 1];

    return SUCCESS;
}
</stddef>
分享到:
评论

相关推荐

    数据结构实验二.docx

    - **功能描述**:此函数用于清除顺序堆栈中的所有数据元素,使得堆栈变为初始状态。 - **参数解释**:参数`S`为指向堆栈的指针,采用指针参数的原因在于需要修改堆栈的状态,而不仅仅是返回值或读取值。 - **实现...

    C#数据结构之堆栈(Stack)实例详解

    接下来,我们可以实现两种堆栈的版本:基于数组的顺序堆栈(SeqStack)和基于链表的链式堆栈(LinkStack)。这里我们专注于顺序堆栈的实现。 顺序堆栈通常使用数组作为底层数据结构。在C#中,`SeqStack&lt;T&gt;`类实现了...

    《数据结构》课程实验实训报告__堆栈及队列的基本操作。.docx

    3. **代码实现**:定义结构体`SeqStack`表示顺序循环队列,包含数组和计数器。实现相应的队列操作函数,如`StackNotEmpty()`、`StackPush()`(对应入队列)、`StackPop()`(对应出队列)等。 4. **测试**:设计...

    有效处理火车车厢排序算法

    // 顺序堆栈 ``` 其中 `StackSize` 定义了堆栈的最大容量,默认为 4。 #### 关键函数解析 - **初始化堆栈 (`Initial`)**: - 初始化堆栈,将堆栈顶位置 `top` 设置为 `-1`,表示堆栈为空。 - **判断堆栈是否为...

    顺序栈的代码

    在本篇内容中,我们将深入探讨顺序栈的建立、使用,以及其核心操作——入栈、出栈、获取栈顶元素和判断栈是否为空。 #### 二、顺序栈的关键操作 1. **初始化**:初始化一个顺序栈通常意味着设置一个固定大小的数组...

    第二次课.ppt_电子版_ppt版

    【互联网技术】中的数据结构——堆栈与队列 在计算机科学中,堆栈和队列是两种重要的数据结构,广泛应用于互联网技术的各种场景。它们是处理数据进出的线性结构,具有特定的操作规则。 **堆栈(Stack)**: 堆栈是...

    数据结构期末考试模拟题

    3. **顺序堆栈类的部分成员方法定义**:顺序堆栈是一种基于数组实现的堆栈,支持入栈和出栈操作。此处展示了顺序堆栈的构造方法及初始化过程。 ```java public class SeqStack implements Stack { public ...

    数据结构ch03.doc

    第 3 章 特殊线性表——栈、队列和串 本章主要介绍了三种特殊线性表:栈、队列和串,它们在数据结构中占有重要地位,特别是在处理特定问题时。首先我们详细讨论栈,它是一种具有后进先出(LIFO)特性的数据结构。 ...

    数据结构课件 数据结构课件

    在本文中,我们将深入探讨数据结构中的一个重要概念——栈,以及它的应用。 栈(Stack)是一种特殊的线性表,其特点是仅允许在表的一端(栈顶)进行插入和删除操作。这种特性使得栈遵循“后进先出”(Last In, ...

    编译原理课程设计

    `SeqStack`类用于处理产生式的顺序和堆栈操作。 2. **算法实现**:设计递归函数,用于计算`FIRST(X)`集合,确保每次调用都能根据当前产生式更新相应的集合。同时,使用循环结构遍历所有非终结符,确保每个非终结符...

Global site tag (gtag.js) - Google Analytics