Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
ЯРОКОС
0 / 0 / 1
Регистрация: 19.03.2012
Сообщений: 21
#1

Добавление элемента в конец списка - C++

22.04.2014, 21:05. Просмотров 1054. Ответов 5
Метки нет (Все метки)

Сначала добавляет первый элемент, а далее не хочет? Посмотрите свежим глазом, а то я лагаю!
http://www.cyberforum.ru/cpp-beginners/thread1499585.html
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void List::bound(char data)
{if (!Head)
{  Head=new Element;
   Head->Next=NULL;
   Head->data=data;
   return;
}
Element*Tail=new Element;
while (!Tail->Next) Tail=Tail->Next;
Element* temp=new Element;
temp->Next=NULL;
Tail->Next=temp;
temp->data=data;
temp->Next=Head;
return;
}
Добавлено через 13 минут
Или покажите свой пример!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 21:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Добавление элемента в конец списка (C++):

Добавление элемента в конец односвязного списка
Добрый день. Помогите решить проблему с ошибкой в функции AddItem. CPP файл ...

Динамические списки: добавление элемента в конец списка
В универе дали такой код. Так как это мое первое знакомство со списками то я...

Добавление элемента в конец односвязного списка - ошибка
Всем привет! Собственно, задача такая: написать функцию, добавляющую элемент...

Односвязный список: добавление элемента в конец списка
Здравствуйте, учу списки, стояла задача - добавить в готовый список элементы в...

Списки. Функции добавление списка в конец и в середину другого списка.
Всем привет!) Я вот написал две функции, 1- добавляется список2 в середину...

5
TenGen
Будущее рядом
99 / 97 / 48
Регистрация: 06.03.2014
Сообщений: 342
22.04.2014, 21:19 #2
ЯРОКОС,
C++
1
2
3
4
5
6
7
8
9
void add(node *elem)
{
if (!head) head = foot = elem;
else
{
foot->next = elem;
foot = elem;
}
}
само собой, elem - новый элемент, head - начало списка, foot - указатель на конец списка (для более удобного добавления в конец списка)
А если без него, то удобнее так
C++
1
2
3
4
5
6
7
8
9
void add(node *elem)
{
if (!head) head = elem;
else
{
elem->next = head;
head = elem;
}
}
добавляет элементы в начало списка, но дополнительных переменных уже не требуется
1
ЯРОКОС
0 / 0 / 1
Регистрация: 19.03.2012
Сообщений: 21
22.04.2014, 21:39  [ТС] #3
Ругается на node!
Цитата Сообщение от TenGen Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
void add(node *elem) 
{
if (!head) head = elem;
else
{
elem->next = head;
head = elem;
}
}
Добавлено через 4 минуты
Вот я делал добавление элемента - на его нужное место, так что бы не повторялся! Н-д: 1 4 6 8 9 11. 8 - это давленый элемент, а теперь нужно сделать в конец списка!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
    Element *temp = new Element;
    temp->data = data;
    Tail = Head;
    if (Head != NULL)
    {
        while (Tail != NULL)
        {
           if (Tail->data == temp->data)
            {
                delete temp;
                break;
            }
           // if (Tail->data == temp->data)
           //     break;
            else if (Tail->data < temp->data && Tail->Next == NULL)
            {
                Tail->Next = temp;
                break;
            }
            else if (Tail->data < temp->data && Tail->Next->data > temp->data)
            {
                temp->Next = Tail->Next;
                Tail->Next = temp;
                break;
            }
            Tail = Tail->Next;
        }
    }
    else
        Head = Tail = temp;
    }
0
TenGen
Будущее рядом
99 / 97 / 48
Регистрация: 06.03.2014
Сообщений: 342
22.04.2014, 21:48 #4
ЯРОКОС, node - ваша структура (у вас вместо node будет Element)
1
ЯРОКОС
0 / 0 / 1
Регистрация: 19.03.2012
Сообщений: 21
22.04.2014, 22:06  [ТС] #5
А если вернутся к первому моему способу, тебе не видно где проблема? Он то запускается, добавляет первый элемент, потом беру добавляю второй элемент, вывожу а там только первый, опять добавляю элемент, вывожу - а там только первый!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void List::bound(char data)
{if (!Head)
{  Head=new Element;
   Head->Next=NULL;
   Head->data=data;
   return;
}
Element*Tail=new Element;
while (!Tail->Next) Tail=Tail->Next;
Element* temp=new Element;
temp->Next=NULL;
Tail->Next=temp;
temp->data=data;
temp->Next=Head;
return;
}
0
TenGen
Будущее рядом
99 / 97 / 48
Регистрация: 06.03.2014
Сообщений: 342
22.04.2014, 22:13 #6
ЯРОКОС, если я не ошибаюсь, то у вас цикл не работает
В строке 9 вы создаете элемент, но не заполняете ее данными. Поэтому цикл Tail->next ведет хз куда
0
22.04.2014, 22:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 22:13
Привет! Вот еще темы с решениями:

Добавление в конец списка
Привет всем, необходимо реализовать алгоритм вставки. В общем беру элемент на...

Добавление в конец односвязного списка
Не получается написать эту функцию.Добавление в начало более тривиально.Сам...

Добавление в конец двусвязного списка
Помогите найти ошибку в коде: не работает добавление в конец. Список...

Не работает добавление в конец односвязного списка
работаю с формой, рисую там различные объекты, которые надо добавлять в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru