数据结构学习之stack
不能小看这些基本的数据结构,写了才发现还是会有问题出现的。
有码有真相:
#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();
}
数据结构学习之stack的更多相关文章
- 数据结构学习笔记——stack实现(数组篇)
一 栈:是一种表,限制插入和删除只能在一个位置,也即是表的末端(也是栈的顶)进行. 基本操作:push 和 pop. 二 栈的数组实现: 运用数组来存储元素,和栈操作先关的是theArray(一个数组 ...
- 算法设计和数据结构学习_5(BST&AVL&红黑树简单介绍)
前言: 节主要是给出BST,AVL和红黑树的C++代码,方便自己以后的查阅,其代码依旧是data structures and algorithm analysis in c++ (second ed ...
- 数据结构学习之字符串匹配算法(BF||KMP)
数据结构学习之字符串匹配算法(BF||KMP) 0x1 实验目的 通过实验深入了解字符串常用的匹配算法(BF暴力匹配.KMP.优化KMP算法)思想. 0x2 实验要求 编写出BF暴力匹配.KM ...
- 数据结构学习之栈求解n皇后问题
数据结构学习之栈求解n皇后问题 0x1 目的 深入掌握栈应用的算法和设计 0x2 内容 编写一个程序exp3-8.cpp求解n皇后问题. 0x3 问题描述 即在n×n的方格棋盘上,放置n个皇后 ...
- 1.基础: 万丈高楼平地起——Redis基础数据结构 学习记录
<Redis深度历险:核心原理和应用实践>1.基础: 万丈高楼平地起——Redis基础数据结构 学习记录http://naotu.baidu.com/file/b874e2624d3f37 ...
- ES6中Map数据结构学习笔记
很多东西就是要细细的品读然后做点读书笔记,心理才会踏实- Javascript对象本质上就是键值对的集合(Hash结构),但是键只能是字符串,这有一定的限制. 1234 var d = {}var e ...
- 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是 ...
- [ACM训练] 算法初级 之 数据结构 之 栈stack+队列queue (基础+进阶+POJ 1338+2442+1442)
再次面对像栈和队列这样的相当基础的数据结构的学习,应该从多个方面,多维度去学习. 首先,这两个数据结构都是比较常用的,在标准库中都有对应的结构能够直接使用,所以第一个阶段应该是先学习直接来使用,下一个 ...
- linux内核数据结构学习总结
目录 . 进程相关数据结构 ) struct task_struct ) struct cred ) struct pid_link ) struct pid ) struct signal_stru ...
随机推荐
- js获取当前域名、Url、相对路径和参数
用 Javascript 可以单独获取当前域名.Url.相对路径和参数,所谓单独攻取,即域名不包括网页文件的路径和参数.参数不包括域名和网页文件路径,下面分别介绍. 一.js获取当前域名有2种方法 1 ...
- js改变iframe 的src地址
<script> function dizhi(){ document.getElementById("aaa").src='http://www.sohu.com' ...
- 常见算法(logistic回归,随机森林,GBDT和xgboost)
常见算法(logistic回归,随机森林,GBDT和xgboost) 9.25r早上面网易数据挖掘工程师岗位,第一次面数据挖掘的岗位,只想着能够去多准备一些,体验面这个岗位的感觉,虽然最好心有不甘告终 ...
- windows 查看动态连接库和静态连接库的方法
在window下查看动态库的导出函数可以用vs自带的Dependenc工具: 查看静态库的信息要用命令行来实现: dumpbin /LINKERMEMBER Test.lib > ...
- Window.sessionStorage
The sessionStorage property allows you to access a session Storage object for the current origin. ...
- VS2017专业版使用最新版Qt5.9.2教程
VS2017专业版使用最新版Qt5.9.2教程(最新教材) 最近三天一直在安装Qt5.9.2,为了能够在自己专业版的VS2017上面使用?可以算是花费了不少的功夫.但是一路上并不是很顺利,就在刚才,终 ...
- 怎样编写YARN应用程序
(注意:本文的分析基于Hadoop trunk上的"Revision 1452188"版本号,详细可參考:http://svn.apache.org/repos/asf/hadoo ...
- Firebug Console Panel 控制台详解【转载+整理】
本文内容 信息显示 信息显示的占位符 console.group 和 console.groupEnd 分组显示 console.dir console.dirxml console.assert c ...
- oracle expdp/impdp 用法详解
http://hi.baidu.com/hzfsai/item/4a4b3fc4b1cf7e51ad00efbd oracle expdp/impdp 用法详解 Data Pump 反映了整个导出/导 ...
- iOS 真机上图标不显示
今天在调试时发现模拟器上图标显示了.但真机上测试时发现图标不显示. 解决办法 57*57 的图标然后命名为: Icon.png 这样显示就正常了. 参考资料:http://www.cnblogs.c ...