На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Хеш Таблица
    я хочу, чтобы у меня был массив структур, каждая из которых содержала некоторое значение и ссылку на следующий элемент этого массива

    struct tcl
    {
    int key;
    Array[] *adress;
    };

    // Глобальные переменные
    static tcl *first;
    tcl Array[N];

    Как-то так, но выдает ошибку
      Вообще-то, лучше указывать тест ошибки и строку, на которую ошибка указывает. Да еще ОС и компилятор неплохо (посмотри на верх страницы). И не понятно, причем тут хеш-таблицы. Это связный однонаправленный список. Поменяйте название топика соответственно теме вопроса. И используйте теги CODE для оформления кода.

      Ну а так, навскидку

      ExpandedWrap disabled
        struct tcl
        {
          int key;
          tcl* next;
        };
         
        static tcl *head;
        head = new tcl;
        head->next = NULL;
        ...
        //не забудь удалить созданные элементы
        вроде рабочее... не помню :rolleyes: Borland 3.1
        ExpandedWrap disabled
          #include <stdlib.h>
          #include <stdio.h>
          #include <conio.h>
          #include <iostream.h>
          #include<STRING.H>
          typedef struct element
              {
              double data;
              element *next;
              };
          typedef class doubleList
              {
              private:
              element *head;
              element *tail;
              int count;
           
              public:
              doubleList();
              ~doubleList();
              void add(double data);
              void delFromHead();//del head
              void delFromTail();
              void delAll();
              void print();
              int getCount();
              void dellFromElementForData(double dat);
             };
           
             doubleList::doubleList()
             {
                 head=tail=NULL;
                 count=0;
             }
             doubleList::~doubleList()
             {
                 delAll();
             }
             int doubleList::getCount()
             {
                return count;
             }
             void doubleList::add(double data)
             {
                 element*temp=new element;
                 temp->data=data;
                 temp->next=NULL;
                 if(head!=NULL)
                 {
                 tail->next=temp;
                 tail=temp;
                 }
                 else
                 {
                 head=tail=temp;
                 }
             }
             void doubleList::delFromHead()
             {
                 element*temp=head;
                 head=head->next;
                 delete temp;
             }
           
             void doubleList::delFromTail()
             {
                 element *temp;
                 for( temp = head ; temp !=NULL ; temp = temp->next)
                 {
                 if( temp->next == tail)
                 {
                     delete tail;
                     temp->next = NULL;
                     tail = temp ;
                 }
                 }
             }
             void doubleList::delAll()
             {
                 while(head!=0)delFromHead();
             }
             void doubleList::print()
             {
                 element*temp=head;
                 while(temp!=0)
                 {
                 cout<<temp->data<<" ";
                 temp=temp->next;
                 }
                 cout<<"\n\n";
             }
           
           
           
           
           
           
          void doubleList::dellFromElementForData(double dat)
          {
               element *temp=head,*temp1,*tempD;
               if(head->data == dat )delFromHead();
                do
                    {
                    if(temp->next->data == dat )
                    {
                    temp1=temp;
                    temp1=temp1->next;
                    tempD=temp1;
                    temp1=temp1->next;
                    temp->next = temp1;
                    delete tempD;
                    }
                   temp=temp->next;
                   }while(temp->next!=NULL);
           
               }
           
           
          void main ()
              {
              clrscr();
              doubleList list;
              int i,n;
              double d;
              cout<<"vvedite razmer spiska \n";
              cin>>n;
              cout<<"\nzapolnite spisok drobnimi 4islami\n";
              for(i = 0 ;i < n ; i ++ )
              {
              cin>>d;
              list.add(d);
              }
              list.print();
              cout<<"vvedite znachenie  elementa dlia ydalenia\n";
              cin>>d;
              list.dellFromElementForData(d);
              list.print();
           
              getch();
              }
          std::list
            std/boost::unordered_map
              имхо, вот что ему нужно:
              ExpandedWrap disabled
                // описание типа данных элемента
                struct Telem
                {
                   int inf;
                   Telem *link;
                }
                Telem *a = new Telem[количество элементов массива];
                // т е a - массив структур (главная магистраль) и от каждого элемента можно выстраивать веточку.
              Сообщение отредактировано: FasterHarder -
                Цитата FasterHarder @
                имхо, вот что ему нужно:

                только надо ещё написать хэш функцию для определения позиции в массиве.
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0240 ]   [ 15 queries used ]   [ Generated: 18.05.24, 10:08 GMT ]