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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двунапр. колцевой список. HELP! 
:(
    Опции темы
rang3r
Дата 2.4.2009, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 2.4.2009

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



Ребята, помогите плз! никак не могу въехать! надо реализовать двунаправленный кольцевой список из объектов класса, потом добавлять, искать, удалять элементы! я набил формирование и добавление но ни4е не работает, подскажите где ошибка.
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
typedef
 struct Link *List;
void Write_List(List pt_lst);
 class Card
  {
   int nomer;
   char *street;
   int etazhi;
   char *opisanie;
    public:
   Card()
    {
     setNomer();
     setStreet();
     setEtazhi();
     setOpisanie();
    }
   void show()
    {
     cout<<nomer<<"\n";
     cout<<street<<"\n";
     cout<<etazhi<<"\n";
     cout<<opisanie<<"\n";
    }
   void setNomer()
    {
     cout<<"\n Nomer: ";
     cin>>nomer;
    }
   void setStreet()
    {
     cout<<"\n Ulitsa: ";
     gets(street);
    }
   void setEtazhi()
    {
     cout<<"Kol-vo etazhei: ";
     cin>>etazhi;
    }
   void setOpisanie()
    {
     cout<<"Opisanie: ";
     gets(opisanie);
    }
  };
Card New_Card_f();
 struct Link
  {
   Card data;
   struct Link *next;
   struct Link *last;
  };
List Add_List(List pt_card);
void Add_After(List pt);
 void main()
  {
   List lst;  
   Add_List(lst);
   Write_List(lst);
  }
 List Add_List(List pt_card)
  {
   List pt_new;
   Card new_card;
   pt_new=(List)calloc(1,sizeof(Link));
   pt_new->data=new_card;
   pt_new->next=pt_card->last;
   pt_card->next=pt_new;
   pt_new->last=pt_card;
   pt_card=pt_new;
   return pt_card;  
  }
 Card New_Card_f()
  {
   Card new_cartochka;
   return new_cartochka;
  }          
 void Write_List(List pt_lst)
  {
   int i;
     pt_lst->data.show();
     pt_lst=pt_lst->next;
   }
 void Add_After(List pt)
  {
   List pt_new;
   Card new_card;
   pt_new=(List)calloc(1,sizeof(Link));
   pt_new->data=new_card;
   pt->last->next=pt_new;
   pt_new->last=pt->last;
   pt_new->next=pt;
   pt->last=pt_new;
  }

PM MAIL Skype   Вверх
Anikmar
Дата 2.4.2009, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Во-первых: Оформите, пожалуйста, код тегами "Код" - когда набираете сообщение, там есть кнопка "Код"
Во-вторых: Что за структура Link - покажите ее описание.
PM MAIL ICQ   Вверх
zim22
Дата 2.4.2009, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

Репутация: 24
Всего: 69



Anikmar, вот она. с трудом, но я нашёл её!
Код
 struct Link
  {
   Card data;
   struct Link *next;
   struct Link *last;
  };




--------------------
PM MAIL   Вверх
andrew_121
Дата 2.4.2009, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



Ужасно. Почему отвечающие должны ломать глаза выпяливая чужой код? Возмутительно Уважаемые!!!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
zim22
Дата 2.4.2009, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

Репутация: 24
Всего: 69



andrew_121, я уже привык. У меня в Опере и код с тегом CODE и без него отображаются одинаково хреново smile


--------------------
PM MAIL   Вверх
andrew_121
Дата 2.4.2009, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



zim22, Firefox respect!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
zim22
Дата 2.4.2009, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

Репутация: 24
Всего: 69



 smile 
andrew_121, особенно если набрать в адресной строке
about:mozilla
about:robots


--------------------
PM MAIL   Вверх
inside_pointer
Дата 2.4.2009, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: 5
Всего: 12



Код

typedef struct Link *List;


struct Link должен существовать, то есть должен быть описан структурный тип с меткой Link до определения нового типа в виде указателя на него

Код

void Write_List(List pt_lst)
{
    int i;
    pt_lst->data.show();
    pt_lst = pt_lst->next;
}


для чего там i, почему нет цикла ?
PM MAIL   Вверх
zim22
Дата 2.4.2009, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

Репутация: 24
Всего: 69



Цитата(inside_pointer @  2.4.2009,  10:55 Найти цитируемый пост)
 должен быть описан структурный тип с меткой Link до определения нового типа в виде указателя на него

вы уверены?
Код
int _tmain(int argc, _TCHAR* argv[])
{

  typedef struct X *Y;
  struct X {};

  Y y;

    return 0;
}




--------------------
PM MAIL   Вверх
hente
Дата 2.4.2009, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.3.2009
Где: Томск

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



ничего не понял решил сделать так для начала:

Код

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
typedef        struct Link *List;

void Write_List(List pt_lst);

//начало класса
class Card{
        int nomer;
        char *street;
        int etazhi;
        char *opisanie;
    public:
    
        //***********************************
    
        Card(){
            setNomer();
            setStreet();
            setEtazhi();
            setOpisanie();
            }
            
        //***********************************
    
        void show(){
            cout<<nomer<<"\n";
            cout<<street<<"\n";
            cout<<etazhi<<"\n";
            cout<<opisanie<<"\n";
            }
            
        //***********************************
    
        void setNomer(){
            cout<<"\n Nomer: ";
            cin>>nomer;
            }
            
        //***********************************
        
        void setStreet(){
            cout<<"\n Ulitsa: ";
            gets(street);
            }
            
        //***********************************
        
        void setEtazhi(){
            cout<<"Kol-vo etazhei: ";
            cin>>etazhi;
            }
            
        //***********************************

        void setOpisanie(){
            cout<<"Opisanie: ";
            gets(opisanie);
            }
    };
//конец класса

/*--------------------------------------------
--------------------------------------------*/

Card New_Card_f();
struct Link{
    Card data;
    struct Link *next;
    struct Link *last;
    };

List Add_List(List pt_card);
void Add_After(List pt);


/*--------------------------------------------
--------------------------------------------*/

void main(){
    List lst;  
    Add_List(lst);
    Write_List(lst);
    }
    
/*--------------------------------------------
--------------------------------------------*/

List Add_List(List pt_card){
    List pt_new;
    Card new_card;
    pt_new=(List)calloc(1,sizeof(Link));
    pt_new->data=new_card;
    pt_new->next=pt_card->last;
    pt_card->next=pt_new;
    pt_new->last=pt_card;
    pt_card=pt_new;
    return pt_card;  
    }
    
/*--------------------------------------------
--------------------------------------------*/

Card New_Card_f(){
    Card new_cartochka;
    return new_cartochka;
    }
    
/*--------------------------------------------
--------------------------------------------*/

void Write_List(List pt_lst){
    int i;
    pt_lst->data.show();
    pt_lst=pt_lst->next;
    }
    
/*--------------------------------------------
--------------------------------------------*/

void Add_After(List pt){
    List pt_new;
    Card new_card;
    pt_new=(List)calloc(1,sizeof(Link));
    pt_new->data=new_card;
    pt->last->next=pt_new;
    pt_new->last=pt->last;
    pt_new->next=pt;
    pt->last=pt_new;
    }


а ведь я на это потратил минут 15 а мог уже помочь ... хотя дело ваше если честно


собсно теперь посмотрим что тут делается....
--------------------
  долой быдло кодеров!!!
PM MAIL   Вверх
inside_pointer
Дата 2.4.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: 5
Всего: 12



это когда-то запомнил насчёт typedef и всегда придерживался, действительно typedef'у всё равно, где тип до или после

update:
главное, что объявлению не всё равно, существует ли тип для объекта или нет

Код


#include <stdio.h>

main()
{
    typedef struct N new_type;
    
    new_type s = { 1 };
    
    struct N { int x; };
    
    printf("%d\n", s.x);
    
    return 0;
}



то есть, не смотря на то, что тип определён через typedef, он не срабатывает до объявления типа, на котором он основан


Это сообщение отредактировал(а) inside_pointer - 2.4.2009, 11:52
PM MAIL   Вверх
zim22
Дата 2.4.2009, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

Репутация: 24
Всего: 69



Цитата(inside_pointer @  2.4.2009,  11:23 Найти цитируемый пост)
это когда-то запомнил насчёт typedef и всегда придерживался

вот тут ещё маленький мануал по тайпдефам, если интересно http://forum.vingrad.ru/forum/topic-250681.html


--------------------
PM MAIL   Вверх
andrew_121
Дата 2.4.2009, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



Цитата(zim22 @  2.4.2009,  10:38 Найти цитируемый пост)
andrew_121, особенно если набрать в адресной строке
about:mozilla
about:robots 

Гм... Набрал. Прочитал. Завис...
Сорри что не по теме, но кто понимает истинное назначение сего текста, и каков его смысл?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Vaulter
Дата 2.4.2009, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 22



Цитата(andrew_121 @ 2.4.2009,  12:55)
Цитата(zim22 @  2.4.2009,  10:38 Найти цитируемый пост)
andrew_121, особенно если набрать в адресной строке
about:mozilla
about:robots 

Гм... Набрал. Прочитал. Завис...
Сорри что не по теме, но кто понимает истинное назначение сего текста, и каков его смысл?

http://ru.wikipedia.org/wiki/Easter_egg


--------------------
PM MAIL WWW ICQ   Вверх
zim22
Дата 2.4.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

Репутация: 24
Всего: 69



Цитата(inside_pointer @  2.4.2009,  11:23 Найти цитируемый пост)
 он не срабатывает до объявления типа, на котором он основан

Можно объявить указатель на этот тип:
Код

typedef struct N new_type;    
  
new_type *s;
int size = sizeof(s);
struct N { std::string sss; int y; double z;};    
s = new new_type(); 
size = sizeof(s);
size = sizeof(*s);



--------------------
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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