数据结构学习之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 ...
随机推荐
- -webkit-margin-before
原文:https://www.cnblogs.com/guyw/p/4369653.html ----------------------------------------------- -webk ...
- [Algorithm] Reverse a linked list
It helps to understands how recursive calls works. function Node(val) { return { val, next: null }; ...
- 杂谈:大容量(T级容量)的网盘的意义
这两天,大容量的网盘的消息不断的推出.有百度的网盘推1T容量的:有腾讯的推10T容量的:有的还推不限容量的等等不一而足. 先看看大容量网盘的历史 早先是没有网盘这个概念的.能提供免费空间是电子邮箱 早 ...
- 【Python】torrentParser1.04 增加获得磁力链URI功能
代码: #------------------------------------------------------------------------------------ # torrentP ...
- SDE操作的许可问题
ArcGIS二次开发和ArcGIS桌面应用中,许可是一个老生常谈的问题.以前也小结过一些经验.参考: http://www.cnblogs.com/liweis/p/4185311.html 问题描述 ...
- iOS xcodebuile 自动编译打包ipa
xcodebuild -alltargets clean 首先进入到工程文件所在的目录.比如我的文件某个工程放在(.xcodeproj文件所在的目录) /Users/xxx/xxx 然后ce /Use ...
- C# list与数组互相转换
1,从System.String[]转到List<System.String>System.String[] str={"str","string" ...
- dynamic(2) – ExpandoObject的使用
一,ExpandoObject使用场合 在传递对象,但是又不想创建一个class或者struct的时候,ExpandoObject就是一个非常好的选择. 假如我们有一个SendMail的函数,功能是发 ...
- JS获取当前/指定URL参数
方法: 首先通过 document.location 获得当前访问网页的网址, 其次用 split 方法通过“?”把网址分为两部分. 如果网址中有参数(arrObj.length > 1) 再用 ...
- cmder、cmd、python 中文乱码问题
cmd下echo中文没有问题,但是进入python模式后就中文乱码,cmder更是echo也乱码 其实是要配置默认code page, cmd默认是ansi的编码,中文自然乱码 CMD chcp 65 ...