zoukankan      html  css  js  c++  java
  • 数据结构学习之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();
    }
    

      

  • 相关阅读:
    函数的调用惯例
    docker 强制删除镜像
    docker 安装 tomcat8
    阿里云 maven仓库地址配置
    ubuntu 18.04 安装搜狗输入法
    centos 监控进程,并自动重启
    intellj idea show "run dashboard" panel
    Centos7 服务器启动jar包
    maven centos7 环境变量
    linux关于IP,端口,防火墙相关命令
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/3311841.html
Copyright © 2011-2022 走看看