数据结构学习之stack
2013-09-10 11:29
302 查看
不能小看这些基本的数据结构,写了才发现还是会有问题出现的。
有码有真相:
测试代码:
有码有真相:
#pragma once class MyStack { public: MyStack(void); ~MyStack(void); void Push(int aValue); int Top(); void Pop(); void PrintAll(); private: int* m_pData; int m_Len; int m_Top; };
#include "MyStack.h" #include <stdio.h> #include <string.h> #include <malloc.h> #include <stdlib.h> MyStack::MyStack(void) :m_pData(NULL) , m_Len(8) ,m_Top(0) { m_pData = (int*)malloc(sizeof(int)*m_Len); memset(m_pData,0,sizeof(int)*m_Len); } MyStack::~MyStack(void) { if (NULL != m_pData) { free(m_pData); m_pData = NULL; } } void MyStack::Push( int aValue ) { if (m_Top == m_Len) { m_Len = m_Len << 2; m_pData = (int*)realloc(m_pData,sizeof(int)*m_Len); } m_pData[m_Top++] = aValue; } void MyStack::Pop() { if (m_Top >= 0) { --m_Top; } else { printf("NoData/n"); } } int MyStack::Top() { if (m_Top>=0) { return m_pData[m_Top]; } else { printf("NoData/n"); return -1; } } void MyStack::PrintAll() { for (int i =0; i< m_Top;++i) { printf("%d ",m_pData[i]); } printf("\n"); }
测试代码:
#include "stdio.h" #include "BinarySearchTree.h" #include "MyQueue.h" #include "MyStack.h" void CopyStr(char* aDestStr,const char* aSrcStr) { //assert(aDestStr && aSrcStr); char* lpStr = aDestStr; while((*aDestStr = *aSrcStr) != '\0') { ++aDestStr; ++aSrcStr; } } int main() { MyStack lStack; for (int i = 0; i< 30; ++i) { lStack.Push(i); } lStack.PrintAll(); lStack.Pop(); lStack.Pop(); lStack.PrintAll(); lStack.Pop(); lStack.Pop(); lStack.Pop(); lStack.Pop(); lStack.Pop(); lStack.PrintAll(); }
相关文章推荐
- 共同学习Java源代码-数据结构-Stack
- 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
- 学习数据结构stack时出现stack.exe一停止工作的错误的处理
- 数据结构学习
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- Redis源码学习1——基本数据结构sds
- 数据结构学习笔记 --- 查找(哈希表)
- 算法导论学习笔记(15)——用于不相交集合的数据结构
- 数据结构和算法-学习笔记4
- 数据结构学习笔记4.4--删除节点
- 数据结构学习——树的基本分类
- stl::stack容器学习
- 数据结构学习记录-两个数组的合并
- 数据结构学习——栈与队列
- 学习算法和数据结构:栈和队列
- [API学习]windows数据结构详解
- 数据结构学习
- [原]零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构
- 数据结构学习连接
- 数据结构学习笔记