Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2011, 19:23   #1
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
По умолчанию Динамические списки в Си++

Доброго времени суток)
Пытаюсь разобраться со списками, требуется хелпа. заранее спасибо откликнувшимся)
ситуёвина: после выполнения выводится какая-то непонятная последовательность чисел и ничего не происходит. есть возможность вводить значения после 10ти тоже ничего не происходит(( почему?

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

struct elem {
   char data;
   elem* link;
};

void print (elem *head) {
  elem* p=head;
  while (p) {
   cout<<p->data<< '->' ;
}           
  cout<<endl;
}   

void errase (elem *head) {
 if (head) {
  errase (head->link);
  if (head) delete head;  
 }    
}

void add2list (elem **phead, char dat){
   elem **ptr = phead, *pnew;
   while (*ptr)
        ptr=&((*ptr)->link);
    
    pnew=new elem;
    pnew->data = dat;
    *ptr = pnew;
}    
    

int main(int argc, char *argv[])
{
 char dat;   
 elem* head= 0;
 cout<<'insert 10 char-values:'<<endl;
 for (int i=0; i<10; ++i){
   cin>>dat;
   add2list(&head, dat);
 }
 cout<<'Your list:'<<endl;
 print (head);
 errase (head);     
      
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
З.Ы. немного поправил код, получилось не-пойми-что, плиз хелп
Вложения
Тип файла: zip cont2.zip (618 байт, 6 просмотров)

Последний раз редактировалось Caged; 01.11.2011 в 20:09.
Caged вне форума Ответить с цитированием
Старый 01.11.2011, 20:21   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

В первой же функции есть бесконечный цикл, например.
Son Of Pain вне форума Ответить с цитированием
Старый 01.11.2011, 20:26   #3
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
По умолчанию

так что ли должно быть?

Код:
void print (elem *head) {
  elem* p=head;
  while (p!=NULL) {
   cout<<p->data<< '->' ;
   p=p->link;
}           
  cout<<endl;
}

Последний раз редактировалось Caged; 01.11.2011 в 20:34.
Caged вне форума Ответить с цитированием
Старый 01.11.2011, 20:38   #4
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
Стрелка

и ещё вопрос:
почему у меня слова выводятся по-стрёмному, хотя я прописал
Код:
setlocale(LC_ALL,"Russian");
?
Caged вне форума Ответить с цитированием
Старый 02.11.2011, 20:35   #5
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
По умолчанию

так, вот исправленный код, но всё равно ошибка 1 вылазит(( я не пнял как исправить

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

struct listI {
 char nfo;
 listI *link;
};

void add_item (listI *f, char dat){
  listI *item = new listI;
   listI *p=f;
    if (p->link == NULL) p->link = item;
    while (p->link !=NULL)
      p=p->link;        
      p->link = item;
      item->nfo = dat;
}
      

void free (listI *f){
  while (f->link != NULL){
    f=f->link; 
    delete f;
  } 
}

void print (listI *f){
  while (f->link != NULL){
   f=f->link;
   cout<< f->nfo << " ";
  }   
}

int main(int argc, char *argv[])
{
 setlocale(LC_ALL,"Russian");
  cout<<"Введите 5 значений типа char:"<<endl;
  listI *first = 0;
  char d=0;
  for (int i=0; i<5; ++i){
    cin>>d; 
    add_item(first, d);
  }  
  print (first);    
  free (first);  
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
Caged вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические списки С++ sir.andrey Помощь студентам 2 10.07.2011 14:02
Динамические списки МихаилС Паскаль, Turbo Pascal, PascalABC.NET 0 30.01.2011 16:55
динамические списки tricksler Помощь студентам 0 10.12.2010 21:15
Динамические списки Saawa Помощь студентам 4 02.12.2009 18:35