動態鏈表的創建、節點內存空間申請以及釋放

1.動態鏈表的初始化:

typedef struct _STACK{

    void* data;
    int size;
    struct _STACK* next;
    struct _STACK* pre;

} STACK;

STACK *stack;

STACK *_stack;

void initStack()

stack = (STACK*)malloc(sizeof(STACK));
stack->data    = (DATA*)malloc(sizeof(DATA));
stack->size    = sizeof(DATA);
stack->next = NULL;
stack->pre = NULL;
_stack = NULL;

2.創建和內存申請:

void creatStack()

if(_stack == NULL) {
        _stack = stack;
    }else {
        STACK* pStack = (STACK*)malloc(sizeof(STACK));
        pStack->data = (DATA*)malloc(sizeof(DATA));
        pStack->size = sizeof(STACK);
        pStack->next = NULL;

        _stack->next = pStack;
        pStack->pre = _stack;
        _stack = _stack->next;
    }

3.釋放內存

void releaseStack()


DATA* data;

while(NULL != stack)
    {
        STACK* sta = stack;
        stack = stack->next;
        data  = (DATA*)sta->data;
        if(data->type == Array)
            free(data->t.a.valp);
        free(sta->data);
        free(sta);
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章