arrayinteger.cpp

来自「SimpleGraphicOperatingSystem 32位图形化操作系统 」· C++ 代码 · 共 131 行

CPP
131
字号

#include <System.h>

namespace System{


    ArrayInteger::ArrayInteger()
    {
        count = 0;
        firstItem = (ArrayIntegerItem*)0;
    }
    ArrayInteger::~ArrayInteger()
    {
    }


	ArrayIntegerItem* ArrayInteger::FirstItem()
	{
	    return firstItem;
	}

	ArrayIntegerItem* ArrayInteger::LastItem()
	{
	    ArrayIntegerItem* p=firstItem;
	    while( p && p->next )
            p = p->next;
        return p;
	}


	ArrayIntegerItem* ArrayInteger::GetItemByIndex(int index)
	{
	    ArrayIntegerItem* p;
	    int i=0;
        if( index < 0 || index >= count )
            return (ArrayIntegerItem*)0;
	    for( p=firstItem; p; p = p->next, i++ )
        {
            if( i==index )
            {
                return p;
            }
        }
        return (ArrayIntegerItem*)0;
	}


	int ArrayInteger::GetIndexByItem( ArrayIntegerItem* item )
	{
	    int index=0;
	    ArrayIntegerItem* p;
	    for( p = firstItem; p; p = p->next, index ++ )
	    {
	        if( p == item )
	        {
	            return index;
	        }
	    }
	    return -1;
	}


	int ArrayInteger::Add( int n )
	{
        Add( -1, n );
        return true;
	}


	int ArrayInteger::Add( int preIndex, int n )
	{
        ArrayIntegerItem* pre = GetItemByIndex( preIndex );
        ArrayIntegerItem* p = new ArrayIntegerItem;
        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 = n;
        count ++;
        return true;
	}


	int& ArrayInteger::operator[]( int index )
	{
	    ArrayIntegerItem* item = GetItemByIndex( index );
	    return item->element;
	}


	int ArrayInteger::Remove( int index )
	{
        if( index < 0 || index >= count )
            return false;
	    ArrayIntegerItem* 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 ArrayInteger::Count()
	{
	    return count;
	}
	int ArrayInteger::Size()
	{
	    return count;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?