`

数据结构之栈的实现

阅读更多

1、顺序结构的栈

#define MaxSize 10
typedef char ElementType;
typedef struct{
    ElementType elem[MaxSize];
    int top;
}SqStack;

#include "MyStackSeq.h"
void InitStack(SqStack *&s)
{
    s=(SqStack*)malloc(sizeof(SqStack));
    s->top=-1;
}
void ClearStack(SqStack *&s){
    free(s);
}
int StackLength(SqStack *s){
    return s->top+1;
}
int StackEmpty(SqStack *s){
    return s->top==-1;
}
int Push(SqStack *&s,ElementType e){
    if(s->top+1==MaxSize){
        return 0;
    }   
    
    s->top++;
    s->elem[s->top]=e;
    return 1;
}

int Pop(SqStack *&s,ElementType &e){
    if(s->top==-1){
        return 0;
    }
    e=s->elem[s->top];
    s->top--;
    return 1;
}
int GetTop(SqStack *s,ElementType &e){
    if(s->top==-1){
        return 0;
    }
    e=s->elem[s->top];
    
    return 1;
}
void DisplayStack(SqStack *s){
    for (int i=s->top; i>=0; i--) {
        printf("%c",s->elem[i]);
    }
    printf("\n");
}

2、链式结构的栈

 

typedef char ElementType;
typedef struct linknode{
    ElementType data;
    struct linknode *next;
}LiStack;



void InitStack(LiStack *&s){
    s=(LiStack *)malloc(sizeof(LiStack));
    s->next=NULL;
    
}
void ClearStack(LiStack *&s){
    LiStack *p=s->next;
    while(p!=NULL){
        
        free(s);
        s=p;
        p=p->next;
    }
    free(s);
    
}
int StackLength(LiStack *s){

    LiStack *p=s->next;
    int i=0;
    while (p!=NULL) {
        i++;
        p=p->next;
    }
    
    return i;
}
int StackEmpty(LiStack *s){

    return s->next==NULL;
}
int Push(LiStack *&s,ElementType e){
    LiStack *p=(LiStack*)malloc(sizeof(LiStack));
    p->data=e;
    p->next=s->next;
    s->next=p;

    return 1;
    
}
int Pop(LiStack *&s,ElementType &e){

    if(s->next==NULL){
        return 0;
    }
    LiStack *p=s->next;
    e=p->data;
    s->next=p->next;
    free(p);
    return 1;
}


int GetTop(LiStack *s,ElementType &e){
    
    if(s->next==NULL){
        return 0;
    }
    
    LiStack *p=s->next;
    e=p->data;
    free(p);
    return 1;
    
}
void DisplayStack(LiStack *s){
    LiStack *p=s->next;
    while (p!=NULL) {
        printf("%c",p->data);
        p=p->next;
    }
    printf("\n");
}
 
分享到:
评论

相关推荐

    数据结构之栈(C实现)

    以下是一个简单的C语言顺序栈实现: ```c #include #define MAX_SIZE 100 typedef int ElementType; typedef struct { ElementType data[MAX_SIZE]; int top; } Stack; void InitStack(Stack* s) { s->top = ...

    c语言数据结构用栈实现四则运算

    在本项目“C语言数据结构用栈实现四则运算”中,开发者利用栈这种数据结构来处理数学中的四则运算,包括加法(+)、减法(-)、乘法(*)和除法(/)。这种方法相比传统的递归或循环方式,通常更加简洁且易于理解。...

    数据结构之栈——C++实现

    通过上述内容,我们可以看到,C++实现数据结构中的栈涉及到了许多编程基础,包括数据结构、STL的使用、模板编程以及内存管理等。理解并熟练掌握这些知识,对于提升编程能力及解决实际问题大有裨益。

    Java语言编写的数据结构-栈实现

    在这个主题中,我们将深入探讨如何在Java中实现栈这一基本数据结构,具体包括顺序栈(stack_SqStack)和链栈(stack_SLinkList)。 栈是一种后进先出(Last In First Out, LIFO)的数据结构,常用于临时存储和快速...

    数据结构 栈的实现(c语言版)

    在本主题中,我们将深入探讨数据结构中的一个重要组成部分——栈,并以C语言为实现平台。栈是一种特殊的线性数据结构,遵循“后进先出”(LIFO)的原则,即最后进入的元素最先被移出。 栈的基本操作通常包括: 1. ...

    数据结构之栈的实现.rar

    在本项目“数据结构之栈的实现”中,我们将深入探讨栈的概念、性质及其在编程中的应用,并结合VS2010环境下的实现方法。 栈的基本操作包括压入(Push)元素到栈顶和弹出(Pop)栈顶元素。在计算机科学中,栈常用于...

    数据结构栈的实现

    ### 数据结构栈的实现 #### 实验目的 本次实验旨在帮助学生掌握栈的基本概念与实现方法,具体目标如下: 1. **理解栈的概念及其在内存中的存储方式**:熟悉栈的基本特性和工作原理,了解栈如何通过两种主要的存储...

    数据结构顺序栈验证实验报告.pdf

    数据结构中的顺序栈是一种特殊的线性表,它具有后进先出(LIFO)的特点,即...通过设计和实现顺序栈的基本操作,学生能够更好地掌握数据结构的原理和应用,而数制转换问题则进一步巩固了对数值计算和算法设计的理解。

    数据结构之栈的定义及实现

    在这个主题中,“数据结构之栈的定义及实现”将深入探讨栈的基本概念、操作以及在编程中的具体实现。 栈的定义: 栈是一种线性数据结构,它的特点是元素只能在栈的一端进行插入和删除操作,这一端被称为栈顶。新...

    Educoder题目:数据结构-栈基本运算的实现及其应用答案解析.md

    Educoder题目:数据结构-栈基本运算的实现及其应用答案解析.md

    数据结构栈的实现实验

    在这个名为“数据结构栈的实现实验”的项目中,我们主要关注的是栈这一重要的数据结构。栈是一种特殊的线性表,其操作遵循“后进先出”(LIFO)原则,即最后进入栈的元素最先被移出。在这个实验中,我们将学习如何...

    数据结构-栈的C语言实现

    数据结构-栈的C语言实现,随手笔记

    数据结构试验之双向栈实现

    数据结构双向栈实现实验,采用双向栈技术可实现对空间的有效利用!

    数据结构 栈 链表实现 c++ 模板

    `StackDrive.cpp`是驱动程序,它包含了测试栈实现的代码。在这个文件中,可以看到`Stack`类的实例化和各种操作,如初始化栈、压栈、弹栈等,以确保栈的正确功能。这通常是通过主函数(`main()`)来完成的,通过一...

    迷宫寻路数据结构栈实现

    ### 迷宫寻路数据结构栈实现 #### 1. 栈的基本概念 - **定义**:栈是一种只允许在一端进行插入或删除操作的线性表。这一端被称为“栈顶”,另一端称为“栈底”。当把一个元素加入栈中时的操作称为“入栈”或“压栈...

    数据结构栈和队列(参考代码)

    ### 数据结构栈和队列知识点解析 #### 一、栈的基本概念与操作 **栈**是一种特殊的线性表,只允许在一端进行插入和删除操作,这一端被称为栈顶,另一端被称为栈底。栈遵循先进后出(First In Last Out, FILO)的...

    数据结构栈实现进制的转换

    "数据结构栈实现进制的转换" 数据结构中,栈是一种重要的数据结构,它可以用来实现各种数据的转换。在这个例子中,我们将使用栈来实现十进制到十六进制的数据转换。 首先,让我们来了解一下栈的基本概念。栈是一种...

    算法与数据结构:栈的实现

    本文将详细介绍栈的三种常见实现方式:链栈、静态栈,并提供C/C++的实现代码,非常适合算法与数据结构的初学者学习。 ### 链栈 链栈是通过链表来实现的栈,每个节点包含一个数据元素和指向下一个节点的指针。链栈...

    C语言-数据结构-栈队列实现

    本主题关注的是如何使用C语言来实现数据结构中的栈和队列,这是两种基础但非常重要的抽象数据类型(ADT)。 栈(Stack)是具有后进先出(LIFO)特性的数据结构。它类似于一个堆叠的盘子,最新的元素被放在顶部,...

    数据结构 顺序栈

    数据结构是计算机科学中的...总结来说,顺序栈是一种简单而有效的数据结构,利用数组实现,提供了快速的插入和删除操作。通过分析和理解上述代码,我们可以更好地掌握顺序栈的原理和使用方法,并能应用于实际问题中。

Global site tag (gtag.js) - Google Analytics