码迷,mamicode.com
首页 > 其他好文 > 详细

linkStack 实现

时间:2018-06-12 21:39:23      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:bsp   fine   nod   list   create   #define   des   过程   AC   

底层调用的是linkList来实现linkStack。

由于linkList是通过linkListNode来串联起来的,而linkStack没有linkListNode结构体,因此需要定义一个结构体来满足linkList的要求,这个过程叫做适配。

注意内存的分配和释放,这也是C++赋予程序员的灵活。

#ifndef LINKSTACK_H_INCLUDED
#define LINKSTACK_H_INCLUDED

typedef void linkStack;

linkStack* linkStack_Create();

void linkStack_Destroy(linkStack* stack);

void linkStack_Clear(linkStack* stack);

int linkStack_Push(linkStack* stack, void* item);

void* linkStack_Pop(linkStack* stack);

void* linkStack_Top(linkStack* stack);

int linkStack_Size(linkStack* stack);


#endif // LINKSTACK_H_INCLUDED
#include "linkStack.h"
#include "linkList.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef void linkStack;


typedef struct _stackNode
{
    linkListNode node;
    void * item;
}stackNode;

linkStack* linkStack_Create()
{
    return Creat();
}

void linkStack_Destroy(linkStack* stack)
{
    linkStack_Clear(stack);
    Destroy(stack);
}

void linkStack_Clear(linkStack* stack)
{
    while(Length(stack) > 0)
    {
        linkStack_Pop(stack);
    }
}


int linkStack_Push(linkStack* stack, void* item)
{
    stackNode *tmp = (stackNode*)malloc(sizeof(stackNode));
    tmp->item = item;
    int ret =  Insert(stack, (linkListNode*)tmp, 0);
    if(ret!=0)
    {
        printf("linkStack_Push malloc failed!\n");
        free(tmp);
    }
    return ret;

}

void* linkStack_Pop(linkStack* stack)
{
    stackNode *tmp = (stackNode*)Delete(stack, 0);
    if(tmp==NULL)
        return NULL;
    void *ret = tmp->item;
    free(tmp);
    return ret;

}

void* linkStack_Top(linkStack* stack)
{
     stackNode* tmp = (stackNode*)Get(stack,0);
     return tmp->item;
}

int linkStack_Size(linkStack* stack)
{
    return Length(stack);
}

 

linkStack 实现

标签:bsp   fine   nod   list   create   #define   des   过程   AC   

原文地址:https://www.cnblogs.com/randyniu/p/9175075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!