您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习之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();
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: