数据结构(二) -- 栈 数组实现
来源:互联网 发布: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
- 数据结构(二) -- 栈 数组实现
- 第十七章经典抽象数据结构二:树(数组实现)
- 数据结构-----栈数组实现
- 数据结构---栈(数组实现)
- 数据结构一(栈-数组实现)
- 数据结构-用数组实现栈
- 【数据结构】栈-数组的实现
- [数据结构] 栈的数组实现
- 数组实现栈的数据结构
- 【数据结构】栈的数组实现
- 简单数据结构---数组实现栈
- 【JAVA数据结构】栈(数组实现)
- 【数据结构】栈的数组实现
- [数据结构]Stack(数组)实现
- 数组实现“堆”(数据结构)
- 【数据结构】——-栈、队列和数组(二)
- 栈实现(数据结构---数组,链表 C实现)
- C#实现数据结构(二)
- XMPP协议
- Dalvik虚拟机【1】——介绍
- 数据库-FMDB简单实用
- adb push :No space left on device
- $.ajax()
- 数据结构(二) -- 栈 数组实现
- 一步一步学习Unix编程[3]——并发服务器介绍与实现
- 写程序的一些注意细节
- 匿名内部类造成的内存泄漏
- android 资源小金库
- PHP定界符 多行字符串的生成
- Dalvik虚拟机【2】——Dex文件格式
- 并查集想法
- C++使用外部库开发的环境配置