Объясните задание

Модераторы: Romeo, Hawk, Absurd, WinMain, DeeJayC

Ответить
regromus
Сообщения: 12
Зарегистрирован: 10 мар 2005, 14:28
Откуда: Владивосток

Объясните задание

Сообщение regromus » 18 апр 2005, 01:18

8-) Привет всем.

Вот такая задачка:

Из входного потока в произвольном порядке содержащим одиночные буквы русского языка и константы целых чисел, читаются пары(буква, число).Если в последней паре не хватает числа, считать его 0.Буква считается одиночной, если слева и справа от нее -- не буква. Будем считать, что следом за буквой не цифра. Написать программу, которая формирует два списка.

||||--->|a1|||--->|a2|||--->|a3||X|

||||--->|c1|||--->|c2|||--->|c3|X|X|

|a1|||--->|c1|||;
|a2|||--->|c2|||;
|a3|||--->|c3|||;

где ai-буква , ci - число.

Объясните на примерах пжлста.
8-)

regromus
Сообщения: 12
Зарегистрирован: 10 мар 2005, 14:28
Откуда: Владивосток

проблема со списком

Сообщение regromus » 18 апр 2005, 14:27

8) Делаю вот так:

Код: Выделить всё

typedef struct lit
  { char a;
    struct lit * next1;
  }  LIT;


 LIT * head1 = NULL;
 LIT * pnode1 = NULL;


 while ((k=fgetc(in))!='\n')
  {
     pnode1=(lit*)malloc(sizeof(lit));
     pnode1->a=k;
     pnode1->next1=NULL;
  }


 while (pnode1!=NULL)
 {
  printf("%c",pnode1->a);
 }

Почему список не распечатывается.
Мохет кто даст стандартнуе процедуры распечатки и создания списков? :shock:

Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сообщение Romeo » 19 апр 2005, 10:52

Код: Выделить всё

...
while ((k=fgetc(in))!='\n')
{
     pnode1 = (lit*)malloc(sizeof(lit));
     pnode1->a = k;
     pnode1->next1 = NULL;

     if (head1 == NULL)
         head1 =  pnode1;
     else
     {
         pnote1->next1 = phead1;
         phead1 = pnote1;
     }
}

pnode1 = phead;
while (pnode1!=NULL)
{
    printf("%c",pnode1->a);
    pnode1 = pnode->next1;
} 
...
В этом случае список дополняется с головы, так что выведены все его элементы будут начиная с последнего и кончая первым, то есть задом наперёд. Для того, чтобыдобавлять элементы списка в хвост, нужно воспользоваться дополнительным указателем ptail1. Это уже попробуй сделать сам - не сложно.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

regromus
Сообщения: 12
Зарегистрирован: 10 мар 2005, 14:28
Откуда: Владивосток

Сообщение regromus » 20 апр 2005, 09:29

Я так понял мы формируем список pnote.

ПОЧЕМУ же сы тогда распечатываем pnode1

Ответить