![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Начинаю изучение двусвязных списков. Много уже чего перечитал. Много чего недопонял. Но все же накалякал этот плагиатообразный код.
Заранее поясню. Создается структура из чара и двух интов. У меня получилось заполнить только чар name. Как заполнить остальные эелементы структуры prc и nom
Это сообщение отредактировал(а) BCworm - 12.9.2007, 12:12 |
|||
|
||||
| JavaCraft |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 8.2.2007 Репутация: нет Всего: 1 |
ИМХО конечно...
1) Объявлена структура litem, а используется item, которая не понятно где объявлена. 2) лично я предпочитаю так
3) Не хватает закрывающей скобки в цикле do 4) вместо malloc лучше использовать
5) free(head); В этом случае, лучше заменить на цикл с явным освобождением памяти.
Это сообщение отредактировал(а) JavaCraft - 10.9.2007, 17:52 |
||||||
|
|||||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Черт это была очипятка. Я скопировал код по кускам и вот получился казус. структура item
Спасибо за советы. Но сейчас меня очень интересует как заполнять остальные элементы структуры prc и nom Это сообщение отредактировал(а) BCworm - 10.9.2007, 23:38 |
|||
|
||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Видишь ли их надо заполнять перемещяя указатель
-------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| ausar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
Если не затруднит. Поясни пожалуйста подробней. указатель это в его коде p->?
Это сообщение отредактировал(а) ausar - 11.9.2007, 07:09 |
|||
|
||||
| apook |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Делаешь так
и заполняешь следующюю Это сообщение отредактировал(а) apook - 11.9.2007, 07:03 -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
||||
|
|||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Спасибо!
У меня структура стотоит из nom prc и col. Если передвинуть указатель то не запишется ли тогда новая структура а не её элемент? |
|||
|
||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Не то будет новая пустая структура, ты для нее нее память выдиляешь
-------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Так item состоит из name prc и col. В моем коде заполняется только name а вот как остальные эелементы структуры заполнить их еще 2
Это сообщение отредактировал(а) BCworm - 11.9.2007, 07:40 |
|||
|
||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Стоп а вопрос то про другое, ты ек можешь заполнить остальные поля кроме name[10] что-ли? Ну это воопще просто задай им значения да и все
Это сообщение отредактировал(а) apook - 11.9.2007, 07:46 -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
В таком случае gets( p->name ); тут уже и не нужно вроде как.
Таким образом если я правильно понял происходит так. Заполняется name затем передвигается на prc заполняется prc передвигается на col потом должн быть указательна новую структуру p->next так? |
|||
|
||||
| apook |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Заполняется name затем prc затем col потом здвигаешь указатель на новую структуру p->next! перемещение у тебя в коде происходит в строчках:
Это сообщение отредактировал(а) apook - 11.9.2007, 08:26 -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
||||
|
|||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Если можно пару строче кода. Как заполняются элементы структуры что после
gets(p->name) |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
я ж написал все?
функция build будит выглядеть так:
кстати а с одним то полем name все нормально работает? -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
А почему остальные поляне заполняются с помошью gets? Сразу компилятор ругается. а вот если я меняю тип prc и col с int на char вроде бы пашет но на выводе выводится только name
|
|||
|
||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
нормально ты списки изучешь и не знаешь функцию gets значит не знаком со строками и типами данных и что Си различает эти типы! Хоть бы полегче че выбрал для начала, а то списки двусвязные.....
-------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| BCworm |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Да у меня есть достаточно большие пробелы в знаниях, но я стараюсь их исправлять по мере поступдения проблем. Спасибо почитал понял.
Это вроде бы работает. Теперь начсет вывода на экран. У меня вот так
Теперь заморочка с форматом вывода интов. name то понятно %s а вот prc и col заполнены просто однозначными цифрами и потому я попробовал с форматом %d но отображается некорректно (какие то левые многозначные цифры. |
||||
|
|||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
думаю проблема в выделении памяти, но не уверен. Подозрительно выглядит
-------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Да это я черновик кода сначало кинул. тап опечатка должно быть item все исправил.
|
|||
|
||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
а это
пиши пожашлуйсто правильно, ошибка может быть в любом месте программы, а ее последствия могут сказаться тока в конце, а могут и не сказаться сейчас а сказаться при других условиях! буть внимательней... -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Кажется проблема заключается в том что заполнение prc и nom происходит неправильно либо вообще не происходит. Получается что на выводе выводится только name а результат вывода остальных элементов структуры просто мусор.
Правильно ли заполняются элементы структуры? либо неправильна построена функция вывода на экран? код подправил p->prev Это сообщение отредактировал(а) BCworm - 12.9.2007, 12:13 |
|||
|
||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
ты исправил так: p->prev=pred; а что такое pred
такая картиеа может быть если неправильно запронен список(или массив) а такое может быть так-же потому-что неправильно выделена память(ну и еще много причин может быть) или может быть что ты заполняешь слишком большими числами для типа int(какие числа ты вводишь?) Дай нормально код всей программы чтоб можно было разобраться.... -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Числа простые однозначные как 1 или 2
Пока код вот такой
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |