Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двусвязный список 
:(
    Опции темы
papam
Дата 21.4.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 2.2.2006
Где: Украина::Запорожь е

Репутация: нет
Всего: 4



Есть прога помогите дописать:
SetSize(int size, int grow = 1) - установка размера массива (если параметр size больше предыдущего размера массива, то выделяется дополнительный блок памяти, если нет, то "лишние" элементы теряются и память освобождается); параметр grow определяет для какого количества элементов необходимо выделить память, если количество элементов превосходит текущий размер массива. Например, SetSize(5, 5); означает, что при добавлении 6-го элемента размер массива становится равным 10, при добавлении 11-го - 15 и т. д. 

GetUpperBound - получение последнего допустимого индекса в массиве. Например, если при размере массива 10, вы добавляете в него 4 элемента, то функция вернет 3. 

Вот прога:
Код

#include <iostream.h>

template<typename T>
struct Elem
{
    T data;T pos;
    Elem *Next,*prev;
};
template<typename T>
class Array
{
    Elem<T> *Head,*Tail;
    int Size;
    public:
        Array();
       ~Array();
        int GetSize();
        DelAll();
        Array:: GetAt(int pos);
        Array<T>::Del(int n);
        Array<T>::operator = (const Array<T> & A);
        void IsEmty();
        Array<T>::operator < (const Array& A);

};
template<typename T>
Array<T>::Array()
{
    Head=Tail=0;
    Size=0;
}
template <typename T>
Array<T>::~Array()
{
   DelAll();
}
template <typename T>
Array<T>::operator = (const Array<T> & A)
{
   if(this == &A)
      return *this;

   this->~Array();

   Elem<T> * temp = A.Head;

   while(temp != 0)
   {
      AddTail(temp->data);
      temp = temp->Next;
   }

   return *this;
}

template <typename T>
Array<T>::operator < (const Array& A)
{
   if(Size < A.Size)
      return true;
    
   return false;
}


template <typename T>
Array<T>::DelAll()
{
   while(Size != 0)
      Del(1);
}
template <typename T>
 Array<T>::Del(int n)
{   
  
    {
      cout << "Ydaliaemii element""\n";
      return(0);
   }
    
   int i = 1;
   Elem<T> * Del = Head;
    
   while(i < n)
   {
      Del = Del->Next;
      i++;
   }
   Elem<T> * PrevDel = Del->prev;
   Elem<T> * AfterDel = Del->Next;
    
   if(PrevDel != 0 && Size != 1)
      PrevDel->Next = AfterDel;
        
   if(AfterDel != 0 && Size != 1)
      AfterDel->prev = PrevDel;
    
   if(n == 1)
      Head = AfterDel;
   if(n == Size)
      Tail = PrevDel;
   delete Del;
  Size--;
}
template<typename T>
void  IsEmty()
{
    for(int i=0;i<GetSize;i++)
    {
        if (i==NULL)
        {
            cout<<"Massiv pust""\n";
        }
        else

        cout<<"V Massive imeutsa elementi""\n";
        
    }

}


template<typename T>
int Array<T>::GetSize()
{
    return Size;
}
template <typename T>
Array<T>::GetAt(int pos)
{
    Elem<T> *temp = Head;
   
   {
      cout <<" GetAt =  ";
    }
   
   int i = 1;
   while(i < pos && temp != 0)
   {
      temp = temp->Next;
      i++;
   }

}


void main()
{    Array<int> a;
    int m[]={9,1,5, 6,4, 0,2,3,2,8};
     double d[]={0.9, 10.5, 0.1, 2.4};
     cout<<"\n";
     cout<<"Elementi massiva : ";
     for(int i=0; i<10; i++) cout<<m[i]<<' ';cout<<"\n";
     cout<<"********************************""\n";
     cout<<"\n";
     a.GetAt(2);
     cout<<m[0]<<"\n";
     cout<<"\n";
     cout<<"************************""\n";
     a.GetSize();
     cout<<"GetSize ="<<i<<"\n";
     cout<<"********************************""\n";
    a.IsEmty();
 
     
 //   for(i=0; i<4; i++)cout<<d[i]<<' ';cout<<"\n";
//   cout<<"********************************""\n";
  //   a.GetElem(1);
//   cout<<d[0]<<"\n";
 //    cout<<"********************************""\n";
//   a.Del(i);
//   cout<<d[2]<<"\n";
     
}


 
--------------------
No Fucking Future
PM MAIL ICQ   Вверх
pablo
Дата 21.4.2006, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: нет
Всего: 6



а что делать то надо ? что дописать ? 


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
papam
Дата 21.4.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 2.2.2006
Где: Украина::Запорожь е

Репутация: нет
Всего: 4



две функции 
--------------------
No Fucking Future
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.