线性表

原创 2012年03月24日 20:57:17
#pragma once
#include <iostream>
#include <Windows.h>
using namespace std;

template<class DataType>

class CMyArray
{
public:
	CMyArray(int iSize);
	virtual ~CMyArray(void);

	BOOL Insert(DataType Item,int iIndex);
	BOOL Remove(int iIndex);
	DataType& operator[](int iIndex);
	DataType* GetPointer();
	int Size();
	int CurSize();
	BOOL ReSize(int iSize);
	void Show();
private:
	DataType* m_pArray;
	int m_iSize;
	int m_iCurSize;
};

template<class DataType>
CMyArray<DataType>::CMyArray(int iSize)
{
	m_pArray=new DataType[iSize];
	for (int index=0;index<iSize;index++)
	{
		m_pArray[index]=0;
	}
	m_iSize=iSize;
	m_iCurSize=0;
}

template<class DataType>
CMyArray<DataType>::~CMyArray(void)
{
	if (NULL!=m_pArray)
	{
		delete[] m_pArray;
		m_pArray=NULL;
	}
}

template<class DataType>
BOOL CMyArray<DataType>::Insert(DataType Item,int iIndex)
{	
	if (iIndex<0 || iIndex>=m_iSize)
	{
		return FALSE;
	}
	for (int index=m_iSize-1;index>iIndex;index--)
	{
		m_pArray[index]=m_pArray[index-1];
	}
	m_pArray[iIndex]=Item;
	m_iCurSize++;
	return TRUE;
}

template<class DataType>
BOOL CMyArray<DataType>::Remove(int iIndex)
{
	if (iIndex<0 || iIndex>=m_iSize)
	{
		return FALSE;
	}
	for (int index=iIndex+1;index<m_iSize;index++)
	{
		m_pArray[index-1]=m_pArray[index];
	}
	m_iCurSize--;
	return TRUE;
}

template<class DataType>
int CMyArray<DataType>::Size()
{
	return m_iSize;
}

template<class DataType>
int CMyArray<DataType>::CurSize()
{
	return m_iCurSize;
}

template<class DataType>
BOOL CMyArray<DataType>::ReSize(int iSize)
{
	DataType* mNewArray=new DataType[iSize];
	if (NULL==mNewArray)
	{
		return FALSE;
	}
	int iMin=0;
	if (iSize<m_iSize)
	{
		iMin=iSize;
	}
	else
		iMin=m_iSize;
	for (int index=0;index<iMin;index++)
	{
		mNewArray[index]=m_pArray[index];
	}
	m_iSize=iSize;
	m_iCurSize=iSize;
	if (NULL!=m_pArray)
	{
		delete[] m_pArray;
		m_pArray=NULL;
	}
	m_pArray=mNewArray;

	return TRUE;
}

template<class DataType>
DataType& CMyArray<DataType>::operator [](int iIndex)
{
	if (iIndex<0 || iIndex>=m_iSize)
	{
		return NULL;
	}
	return m_pArray[iIndex];
}

template<class DataType>
DataType* CMyArray<DataType>::GetPointer()
{
	return m_pArray;
}

template<class DataType>
void CMyArray<DataType>::Show()
{
	cout<<"Total Size="<<m_iSize<<endl;
	cout<<"Curent Size="<<m_iCurSize<<endl;
	for (int index=0;index<m_iSize;index++)
	{
		cout<<m_pArray[index]<<endl;
	}
}

线性表排序

1.顺序表 #include #include #define MAX 20 typedef struct { ...
  • xuhang0910
  • xuhang0910
  • 2015年10月22日 20:55
  • 646

线性表结构、类别以及功能的实现。

一  线性表 1 顺序表: typedef struct { int elem[100]; int length; //length是顺序表的长度 } SqList; 顺序表的长...
  • qq_35957011
  • qq_35957011
  • 2017年03月28日 18:13
  • 699

顺序线性表的实现及操作(C语言实现)

什么是顺序线性表.....自己百度。
  • u010590318
  • u010590318
  • 2014年06月02日 00:24
  • 3386

线性表类模板实现

测试结果 测试程序 /// @file exam_x_x_cpp.cpp /// @brief 测试动态数组模板实现 #include #include #include #include...
  • LostSpeed
  • LostSpeed
  • 2016年01月05日 09:30
  • 874

使用C++实现的线性表

现在大三下学期了,由于参加了阿里巴巴的大四实习生校园招聘,第一轮电话面试就被刷下来了,这让我意识到了自己的能力还很不足,意识到了自己与那些大公司需要的人还有很长的路要走。 在电话面试中,基本上是根据...
  • hongbochen1223
  • hongbochen1223
  • 2015年03月27日 19:58
  • 2778

线性表与13个基本操作的实现

一、宏定义解释 ElemType :线性表数据元素数据类型 LIST_INIT_SIZE : 线性表初始数据元素容量 Status :函数返回值(一般替换in...
  • BruthYU
  • BruthYU
  • 2016年09月24日 00:55
  • 4834

数据结构与算法-线性表的定义与特点

1.线性表概念   线性表是由零个或者多个数据元素组成的有序的序列。 图示: 2.特点 2.1 有序 我们可以从上图看见,线性表里面的元素是一个挨着一个顺序排下去的,就像平常小朋友排...
  • raylee2007
  • raylee2007
  • 2015年07月28日 15:39
  • 1817

线性表知识点总结一(第三天)

1. 线性表(List): 定义:由零个(称为空表)或多个数据元素组成的有限序列。 数据类型:是指由一组性质相同的值得集合及定义在此集合上的一些操作的总称 数据类型分为原子类型(不可再分解的基本...
  • qq_31151129
  • qq_31151129
  • 2016年07月20日 16:07
  • 419

C语言线性表的简单创建和操作

源码转自网易云课堂http://mooc.study.163.com/learn/ZJU-1000033001?tid=2001210001#/learn/content?type=detail&id...
  • qq_33697557
  • qq_33697557
  • 2016年03月22日 00:05
  • 6085

C++实现顺序结构线性表的基本操作

这两天在准备《软件工程》期末考试,顺带着整理一下今天复习线性表基本操作的代码。...
  • sinat_34474705
  • sinat_34474705
  • 2017年01月09日 23:02
  • 2723
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线性表
举报原因:
原因补充:

(最多只允许输入30个字)