欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-09-17 08:22:31
本文实例为大家分享了c语言实现通用数据结构之通用椎栈的具体代码,供大家参考,具体内容如下这是在通用链表的基础上实现的椎栈,关于链表的实现参见: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;
}

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

相关标签: C语言 椎栈