array.cpp
来自「SimpleGraphicOperatingSystem 32位图形化操作系统 」· C++ 代码 · 共 125 行
CPP
125 行
//#include <System.h>
namespace System{
template<class T>
Array<T>::Array()
{
count = 0;
firstItem = (ArrayItem<T>*)0;
}
template<class T>
ArrayItem<T>* Array<T>::FirstItem()
{
return firstItem;
}
template<class T>
ArrayItem<T>* Array<T>::LastItem()
{
ArrayItem<T>* p=firstItem;
while( p && p->next )
p = p->next;
return p;
}
template<class T>
ArrayItem<T>* Array<T>::GetItemByIndex(int index)
{
ArrayItem<T>* p;
int i=0;
if( index < 0 || index >= count )
return (ArrayItem<T>*)0;
for( p=firstItem; p; p = p->next, i++ )
{
if( i==index )
{
return p;
}
}
return (ArrayItem<T>*)0;
}
template<class T>
int Array<T>::GetIndexByItem( ArrayItem<T>* item )
{
int index=0;
ArrayItem<T>* p;
for( p = firstItem; p; p = p->next, index ++ )
{
if( p == item )
{
return index;
}
}
return -1;
}
template<class T>
int Array<T>::Add( T e )
{
Add( -1, e );
return true;
}
template<class T>
int Array<T>::Add( int preIndex, T e )
{
ArrayItem<T>* pre = GetItemByIndex( preIndex );
ArrayItem<T>* p = new ArrayItem<T>;
if( pre == null )
pre = LastItem();
if( pre ){
if( pre->next ){
pre->next->pre = p;
}
pre->next = p;
}else{
firstItem = p;
}
p->pre = pre ;
p->element = e;
count ++;
return true;
}
template<class T>
T& Array<T>::operator[]( int index )
{
ArrayItem<T>* item = GetItemByIndex( index );
return item->element;
}
template<class T>
int Array<T>::Remove( int index )
{
if( index < 0 || index >= count )
return false;
ArrayItem<T>* item = GetItemByIndex( index );
if( item ){
if( item->pre )
{
item->pre->next = item->next;
}else{
firstItem = item->next;
}
if( item->next )
{
item->next->pre = item->pre;
}
count --;
delete item;
return true;
}
return false;
}
template<class T>
int Array<T>::Count()
{
return count;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?