数据结构(二) -- 栈 数组实现

来源:互联网 发布:magento建站 编辑:程序博客网 时间:2024/06/11 11:28

栈的描述

栈是一种后进先出(LIFO)的数据结构,先入栈的元素只能在最后出栈,在实际生活中就像摆放盘子一样,最后放的一个可以最先拿走。


栈接口定义

int initStack(stackT *stack, int size);                 /* 初始化栈,大小为size*/void destoryStack(stackT *stack);                       /* 销毁栈 */int stackIsEmpty(stackT *stack);                        /* 栈是否为空 */int stackPush(stackT *stack, stackElementT element);    /* 入栈 */int stackPop(stackT *stack, stackElementT *element);    /* 出栈 */


栈实现

<stack.h>

#ifndef __STACK_H__#define __STACK_H__typedef int stackElementT;typedef struct stack {    int top;    int size;    stackElementT *contents;}stackT;int initStack(stackT *stack, int size);                 /* 初始化栈,大小为size*/void destoryStack(stackT *stack);                       /* 销毁栈 */int stackIsEmpty(stackT *stack);                        /* 栈是否为空 */int stackPush(stackT *stack, stackElementT element);    /* 入栈 */int stackPop(stackT *stack, stackElementT *element);    /* 出栈 */#endif

<stack.c>

#include <stdio.h>#include <stdlib.h>#include <string.h>#include "stack.h"int initStack(stackT *stack, int size){    stack->contents = (stackElementT *)malloc(sizeof(stackElementT) * size);    if(NULL == stack->contents) {        perror("malloc");        return -1;    }    stack->top = -1;    stack->size = size;    return 0;}void destoryStack(stackT *stack){    free(stack->contents);    stack->contents = NULL;}int stackIsEmpty(stackT *stack){    if(-1 == stack->top) {        return 1;    } else {        return 0;    }}int stackPush(stackT *stack, stackElementT element){    if(stack->top == stack->size - 1) {        printf("stack is full.\n");        return -1;    }    stack->top++;    stack->contents[stack->top] = element;    return 0;}int stackPop(stackT *stack, stackElementT *element){    if(stackIsEmpty(stack)) {        printf("stack is empty.\n");        return -1;    }    *element = stack->contents[stack->top];    stack->top--;    return 0;}


github地址(含Makefile和测试代码)

https://github.com/zsirkg/myWorks/tree/master/algorithms_and_data_structures/stack/array


0 0
原创粉丝点击