C语言实现通用数据结构之通用椎栈

 更新时间:2021年11月26日 10:56:04   作者:swwlqw  
这篇文章主要为大家详细介绍了C语言实现通用数据结构之通用椎栈,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现通用数据结构之通用椎栈的具体代码,供大家参考,具体内容如下

这是在通用链表的基础上实现的椎栈,关于链表的实现参见:C语言实现通用数据结构之通用链表

这里所说的椎栈就是指的栈。

注意椎栈中只存储了指针,没有储存实际的数据。

头文件:

/*************************
*** File myStack.h
**************************/
#ifndef MYSTACK_H_INCLUDED
#define MYSTACK_H_INCLUDED
 
#include "myList.h"
typedef MyList MyStack;
 
//创建堆栈
MyStack * createMyStack();
 
//释放堆栈
void freeMyStack(MyStack * stack);
 
//加入
void myStackAdd(MyStack* const stack, void* const data);
 
//删除
void* myStackRemove(MyStack * const stack);
 
//取得堆栈头
void* myStackGetTop(const MyStack * const stack);
 
#endif // MYSTACK_H_INCLUDED

源文件

/*************************
*** File myStack.c
**************************/
#include "myStack.h"
 
//创建堆栈
MyStack * createMyStack()
{
    return createMyList();
}
 
//释放堆栈
void freeMyStack(MyStack * stack)
{
    freeMyList(stack);
}
 
//加入
void myStackAdd(MyStack* const stack, void* const data)
{
    myListInsertDataAtFirst(stack, data);
}
 
//删除
void* myStackRemove(MyStack * const stack)
{
    return myListRemoveDataAtFirst(stack);
}
 
//取得堆栈头
void* myStackGetTop(const MyStack * const stack)
{
    return myListGetDataAtFirst(stack);
}

测试文件

/*************************
*** File main.c
*** test for MyStack
**************************/
#include <stdio.h>
#include <stdlib.h>
#include "myStack.h"
 
typedef struct a
{
    int i;
    char c;
} A;
 
 
int main()
{
    const int S =10;
 
    //创建并初始化数据
    A * data= malloc(sizeof(A)*S);
    for (int i=0; i< S; i++)
    {
        data[i].i=i;
        data[i].c=(char)('A'+ i);
    }
 
    //创建椎栈
    MyStack * stack= createMyStack();
 
    //插入数据
    myStackAdd(stack, &data[0]);
    myStackAdd(stack, &data[2]);
    myStackAdd(stack, &data[6]);
 
    //测试删除
    while(myListGetSize(stack))
    {
        A * pp = myStackRemove(stack);
        printf("%d[%c] ", pp->i, pp->c);
    }
    puts("");
 
    //释放椎栈
    freeMyStack(stack);
 
    //释放数据
    free(data);
    return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解VS2019 dumpbin查看DLL的导出函数

    详解VS2019 dumpbin查看DLL的导出函数

    这篇文章主要介绍了详解VS2019 dumpbin查看DLL的导出函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • c++素数筛选法

    c++素数筛选法

    本文讲的是筛选法的C++实现, 筛选法又称筛法,是求不超过自然数N(N&gt;1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。
    2017-05-05
  • C语言实现生日贺卡

    C语言实现生日贺卡

    这篇文章主要为大家详细介绍了C语言实现生日贺卡的具体方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • C++函数指针详解

    C++函数指针详解

    这篇文章主要介绍了C++函数指针详解,通过文字描述C++函数指针基础概念,内涵详细的代码实现和解析,希望对你能够有所帮助
    2021-06-06
  • 示例详解C++语言中的命名空间 (namespace)

    示例详解C++语言中的命名空间 (namespace)

    C++名字空间是一种描述逻辑分组的机制,也就是说,如果有一些声明按照某种准则在逻辑上属于同一个模块,就可以将它们放在同一个名字空间,以表明这个事实,这篇文章主要给大家介绍了关于C++语言中命名空间 (namespace)的相关资料,需要的朋友可以参考下
    2021-08-08
  • C语言猜凶手的代码实现

    C语言猜凶手的代码实现

    本文主要介绍了C语言猜凶手的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • vs2019 Com组件初探之简单的COM编写及实现跨语言调用的方法

    vs2019 Com组件初探之简单的COM编写及实现跨语言调用的方法

    这篇文章主要介绍了vs2019 Com组件初探之简单的COM编写及实现跨语言调用的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • C++矩阵运算的实现简单

    C++矩阵运算的实现简单

    本文主要介绍了C++矩阵运算的实现简单,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C语言数据结构之线索二叉树及其遍历

    C语言数据结构之线索二叉树及其遍历

    这篇文章主要介绍了C语言数据结构之线索二叉树及其遍历的相关资料,为了加快查找节点的前驱和后继。对二叉树的线索化就是对二叉树进行一次遍历,在遍历的过程中检测节点的左右指针是否为空,如果是空,则将他们改为指向前驱和后继节点的线索,需要的朋友可以参考下
    2017-08-08
  • C++ 类的构造函数详解及实例

    C++ 类的构造函数详解及实例

    这篇文章主要介绍了C++ 类的构造函数详解及实例的相关资料,学习C++ 的朋友对构造函数肯定不陌生,非常重要的基础知识,这里就详细介绍下,需要的朋友可以参考下
    2016-12-12

最新评论