Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
1 / 1 / 1
Регистрация: 08.12.2016
Сообщений: 30
1

Вставка узла в хвост списка

15.05.2017, 17:00. Показов 2785. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне нужно вставить узел в хвост списка. Я написал функцию вставки, но она не доходит до конца списка.
В функцию передаю список и информационное поле узла, которое надо вставить. Можете помочь найти ошибку?
C++
1
2
3
4
5
6
7
8
9
10
11
12
Node*AddInTail(Node**p,int k)
{       Node*ins=new Node; // узел, который надо вставить
    Node*walk=new Node;// создаем новый узел,для прохода по списку 
        ins->k=k;                 //в информационное поле вставляю число k
        for(walk=*p;walk->next!=NULL;walk=walk->next) //дохожу до конца списка
            {
                walk->next=ins; //в указатель конца списка записываю узел
                ins->next=NULL; //в указатель вставленного узла записываю NULL
    return *p;
    }
    return *p;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2017, 17:00
Ответы с готовыми решениями:

Вставка узла в середину двусвязного списка
Уважаемые коллеги, прошу помощи! Изучаю двусвязный список. Вставку в конец и начало я...

Вставка нового узла в заданную позицию циклического списка
Разработать численную модель, алгоритм и программу расчета по заданной математической модели. ...

Прибавить в хвост списка такой элемент, чтобы сумма нового списка была равна S
Подскажите, пожалуйста, в чем ошибка Задание: Прибавить в хвост списка такой элемент, чтобы сумма...

Если первый и последний элементы списка чётные - то поменять их местами. Иначе поменять местами голову и хвост списка
Дан список. Если первый и последний элементы списка чётные - то поменять их местами. Иначе поменять...

6
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
15.05.2017, 17:08 2
Лучший ответ Сообщение было отмечено ИсоЬорг921 как решение

Решение

ИсоЬорг921,
Цитата Сообщение от ИсоЬорг921 Посмотреть сообщение
C
1
Node*walk=new Node;// создаем новый узел,для прохода по списку
new Node не нужно
Цитата Сообщение от ИсоЬорг921 Посмотреть сообщение
C
1
2
3
4
5
6
for(walk=*p;walk->next!=NULL;walk=walk->next) //дохожу до конца списка
{
    walk->next=ins; //в указатель конца списка записываю узел
    ins->next=NULL; //в указатель вставленного узла записываю NULL
    return *p;
}
C
1
2
3
4
5
ins->next=NULL;
Node *walk = *p;
while (*walk->next ! = NULL) 
    walk=walk->next;
walk->next=ins;
1
1 / 1 / 1
Регистрация: 08.12.2016
Сообщений: 30
15.05.2017, 17:17  [ТС] 3
C++
1
while (*walk->next ! = NULL)
Выдает ошибку:" отсутствует оператор '!=' , соответствующий этим операндам
Типы операндов:Node!=int
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
15.05.2017, 17:24 4
ИсоЬорг921, *уберите опечатался
0
1 / 1 / 1
Регистрация: 08.12.2016
Сообщений: 30
15.05.2017, 17:27  [ТС] 5
Он все равно не доходит до конца списка. Список состоит из 5 элементов, он должен вставить после пятого, а он вставляет после второго.
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
15.05.2017, 17:33 6
ИсоЬорг921, весь код покажите.
0
1 / 1 / 1
Регистрация: 08.12.2016
Сообщений: 30
15.05.2017, 17:51  [ТС] 7
Плюс, что я написал для вставки в хвост.
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
struct Node
{
    int k;
    Node* next;
};
Node*Add(Node*p,int k)   //помещает число k в конец списка и возвращает указатель на начало списка
{
Node*t=new Node, *q=p;  // выделяем память под новый узел
t->k=k;                 //в инфо. поле заносим число k 
t->next=0;              //t-последний узел-> в поле связи заносим ноль
if(!p)                  //если список пуст, то возврощаем адрес нового узла
return t;
while (q->next)         //двигаем указатель q на last узел списка
    q=q->next;
    q->next=t;          //в поле связи бывшего последнего узла заносим адреснового узла t
    return p;
}
void Print(Node*p)  // вывод списка на экран
{
    for(;p;p=p->next)  // пробег по узлам списка
        printf("%d->", p->k);
};
int main()
{
    setlocale (LC_ALL,"Russian");
    int n,k,i;// n-колличество узлов; k-информационное число; i- счетчик для проъода
    int g=0;
    Node*X=NULL;
    //Node*p;
    srand(time(NULL));
    Node*beg=NULL;          // список пуст
    printf("n=");           //  пользовать вводит длину списка
    scanf_s("%d",&n);
    for(i=0;i<n;i++)
    {
        k=rand()%100;         // генерирум случайные числа
        beg=Add(beg,k);     // и заносим их в список
    }
    Print(beg);
printf("g=");   
            scanf_s("%d",&g);
            printf("k=");   
            scanf_s("%d",&k);
            X=AddInAfterTheGivenElement(&beg,g,k);
            Print(X);
}
Добавлено через 8 минут
Спасибо, я разобрался.
0
15.05.2017, 17:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2017, 17:51
Помогаю со студенческими работами здесь

Игра змейка С++ . Хвост. как создать хвост змейки
День добрый помогите, не знаю как сделать хвост. Код был взят с форума и переделан. Но с хвостом не...

AVL-деревья - вставка узла
AVLTreeNode&lt;T&gt;: using System; namespace MyCollections.Generic { //Класс узла AVL-дерева....

Вставка нового узла в XML
В xml такой структуры нужно вставлять новые теги field &lt;extension&gt; &lt;config&gt; &lt;fields&gt;...

Вставка нового узла в бинарное дерево
Подскажите можно ли как-то реализовать, чтобы в консоле можно было вставлять новый узел, нахождение...

Вставка узла в дерево Windows Explorer
Хочу, чтобы моя прога добавляла в дерево Explorerа свой узел (типа как Панель управления или...

Вставка нового узла в двусвязный список
процедура вставки нового узла. Вот сделала вставку в голову и в хвост. но проблема с процедурой...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru