栈的实现(数组)
来源:互联网 发布:淘宝食品店开店要求 编辑:程序博客网 时间:2024/06/11 19:23
1.主要实现了创建、入栈、出栈、销毁等操作,代码如下:
//// Stack.h// StackArray//// Created by Mac on 15/11/22.// Copyright © 2015年 Mac. All rights reserved.//#ifndef Stack_h#define Stack_h#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdbool.h>#define EMPTY_STACK_TOP -1#define MAX_STACK_SIZE 1024*1024typedef struct _tagStack{ int top; //when top = -1, stack is empty; int size; void** data;}Stack;//stack createStack* StackCreate(int maxSize);//pushint StackPush(Stack* st,void* data);//popvoid* StackPop(Stack* st);//topvoid* StackTop(Stack* st);//isEmptybool StackIsEmpty(Stack* st);//isFullbool StackIsFull(Stack* st);//stack destroyvoid StackDestroy(Stack* st);#endif /* Stack_h */
//// Stack.c// StackArray//// Created by Mac on 15/11/22.// Copyright © 2015年 Mac. All rights reserved.//#include "Stack.h"//stack createStack* StackCreate(int maxSize){ if (maxSize > MAX_STACK_SIZE) { maxSize = MAX_STACK_SIZE; } Stack* st = (Stack*)malloc(sizeof(Stack)); if (st == NULL) { return NULL; } st->data = (void**)malloc(sizeof(void*)*maxSize); if(st->data == NULL) return NULL; st->size = maxSize; st->top = EMPTY_STACK_TOP; memset(st->data,0,sizeof(sizeof(void*)*maxSize)); return st;}//pushint StackPush(Stack* st,void* data){ if(st == NULL || data == NULL){ return -1; } if (StackIsFull(st)) { return -2; } st->top++; st->data[st->top] = data; return 0;}//popvoid* StackPop(Stack* st){ if (st == NULL) { return NULL; } if (StackIsEmpty(st)) { return NULL; } void* data = st->data[st->top]; st->data[st->top] = NULL; st->top--; return data;}//topvoid* StackTop(Stack* st){ if (st == NULL) { return NULL; } if (StackIsEmpty(st)) { return NULL; } return st->data[st->top];}//isEmptybool StackIsEmpty(Stack* st){ return st->top == EMPTY_STACK_TOP;}//isFullbool StackIsFull(Stack* st){ return st->top == st->size-1;}//stack destroyvoid StackDestroy(Stack* st){ if (st == NULL) { return; } for (int i = 0; i<st->top; i++) { if (st->data[i] != NULL) { free(st->data[i]); st->data[i] = NULL; } } free(st->data); st->data = NULL; free(st); st = NULL;}
0 0
- 栈的实现(数组)
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 栈的数组实现
- 动态数组(栈)的实现实例
- 栈的一种实现(数组)
- 简单栈的实现(基于数组)
- 栈的数组实现(Java)
- 栈的C语言实现(数组)
- 栈的实现(数组方式)
- 代码整洁之道(一)--------有意义的命名
- 纸上谈兵: 哈希表 (hash table)
- 2015年大二上-数据结构-队列(6)- 停车场模拟
- Dynamics CRM 2015自定义框架解决方案1.0发布
- 把plist文件中的数据赋给数组
- 栈的实现(数组)
- 获取触摸的点
- Socket套接字/TCP
- static 与 final 关键字详解
- 获取触摸的属性
- 如何关闭win7欢迎界面
- easyui-Messager(消息窗口)-2
- 中国各省市经纬度坐标
- 从plist中获取数据赋给字典