数据结构
定义
到目前为止,没有精确的定义,有以下几种解释:
- 数据结构+算法=程序
- 以一定的方式,将信息组织在一起。
为什么学数据结
- 找工作时笔试、面试必备知识
- 拥有更好层次的理解代码的能力,可以大段大段的思考代码
- 工作需要
复杂度
复杂度是用于评判一种算法好坏的标尺。
包括:
- 时间复杂度(重要):衡量计算次数的规模,一般用O(n)表示
- 空间复杂度(没有上一个重要):衡量使用的空间
动态数组
实现:
//
#include "stdafx.h"
#pragma once
#include <stdlib.h>
#include <string.h>
#include<time.h>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
#define ty int
class CMyVector
{
public:
CMyVector()
{
m_pDataAry = new ty[5];
m_nCount = 0;
m_nCapacity = 5;
}
~CMyVector()
{
}
ty *m_pDataAry;
int m_nCount; //当前元素个数
int m_nCapacity; //当前容量大小
int size()
{
return m_nCount;
}
bool empty()
{
return (m_nCount == 0) ? true : false;
}
void pop_back()
{
if (m_nCount == 0)
{
return;
}
m_nCount--;
return;
}
ty& operator[](int index)
{
return m_pDataAry[index];
}
ty front()
{
return m_pDataAry[0];
}
ty back()
{
return m_pDataAry[m_nCount - 1];
}
void push_back(ty item)
{
if (m_nCount + 1 > m_nCapacity)
{
ty* pOld = m_pDataAry;
m_pDataAry = new ty[m_nCapacity * 2];
//check...
memcpy(m_pDataAry, pOld, m_nCapacity);
if (pOld)
{
delete[] pOld;
pOld = nullptr;
}
m_nCapacity *= 2;
}
m_pDataAry[m_nCount] = item; //注意拷贝构造
m_nCount++;
}
};
int main(int argc, char* argv[])
{
CMyVector myvec;
myvec.push_back(10);
myvec.push_back(20);
myvec.push_back(30);
myvec.push_back(40);
myvec.push_back(50);
for (int i = 0; i < myvec.size(); i++)
{
cout << myvec[i] << " ";
}
cout << endl;
return 0;
}