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