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

  测试代码:

#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) != '')
	{
		++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();
}

  

原文地址:https://www.cnblogs.com/xiangshancuizhu/p/3311841.html