С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 12.03.2016
Сообщений: 7
1

Реализовать однонаправленный список с барьерным элементом

16.04.2016, 23:28. Показов 2554. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно реализовать однонаправленный список с барьерным элементом.Один из пунктов задачи это написать функцию заполняющая список случайными n элементами.В данный момент у меня есть функция ,которая добавляет один элемент в конец .Один узел добавляется так как мне нужно,но вот следующие уже создаются поверх первого и совершенно не понимаю почему.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
typedef struct node{
    int data;
    struct node* next;
}node;
 
typedef struct node* list;
node start={1,NULL};
list l=&start;
 
void add_element(list l){
    srand(time(NULL));
    list temp=l;
    if(!temp->next==NULL) {
       temp=temp->next;
    }
    while(temp->next!=NULL)
        temp=temp->next;
    node n={rand()%5+1,NULL};
    temp->next=&n;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2016, 23:28
Ответы с готовыми решениями:

Реализовать однонаправленный список
Плиз срочно помогите,нужно до завтра сделать задание(((ибо не поставят зачет(Задание вроде не...

Реализовать однонаправленный список
Ребята помогите нужно реализовать однонаправленный список. Необходимо предусмотреть режим поиска...

Сформировать однонаправленный список и добавить элемент перед элементом с заданным ключом
задача: Сформировать однонаправленный список. Добавить элемент перед элементом с заданным ключом;...

Линейный однонаправленный список: удаление элемента перед первым положительным элементом
Есть функции для ввода и вывода списка, освобождения памяти. Проблема с функцией для удаления...

1
...
1910 / 1329 / 966
Регистрация: 12.02.2013
Сообщений: 2,172
18.04.2016, 05:37 2
Цитата Сообщение от Bernard12 Посмотреть сообщение
следующие уже создаются поверх первого и совершенно не понимаю почему.
Вы в своей подпрограмме add_element используете статическую локальную переменную n адрес которой вы сохраняете как next. Вы должны понимать что время жизни такой переменной ограничено функцией. Вообще это сразу попадает под undefined behavior. Поэтому искать причину почему у вас всего одно число уже не имеет никакого смысла.

Мой пример:
Кликните здесь для просмотра всего текста
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
typedef struct Node {
    int data;
    struct Node* next;
} Node;
 
//-----------------------------------------------------------------------------
void add(Node** list, int value) {
    Node* node = malloc(sizeof(Node));
    node->data = value;
    node->next = NULL;
 
    for (; *list; list = &((*list)->next)) { ; }
 
    *list = node;
}
//-----------------------------------------------------------------------------
Node* make(unsigned cnt, int min, int max) {
    Node* list = NULL;
    srand(time(NULL));
 
    while (cnt--) {
        add(&list, rand() % (max - min) + min);
    }
 
    return list;
}
//-----------------------------------------------------------------------------
void print(const Node* list) {
    for (; list; list = list->next) {
        printf("%d ", list->data);
    }
    printf("\n");
}
//-----------------------------------------------------------------------------
 
int main() {
    Node* list = make(10, 1, 100);
 
    print(list);
 
    return 0;
}
0
18.04.2016, 05:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2016, 05:37
Помогаю со студенческими работами здесь

Реализовать однонаправленный список
Реализуйте однонаправленный список. Необходимо предусмотреть режим сортировки элементов списка без...

Однонаправленный связанный список (Вставить новый узел с нулевым значением перед первым отрицательным элементом...)
Помогите выполнить задание: Тип информационной части узла списка - INT Вид списка -...

Построить однонаправленный список и реализовать стек
Построить однонаправленных список и реализовать стек. Реализовать получения доступа,...

Однонаправленный список. Необходимо реализовать процедуры
Доброе время суток! Помогите разобраться с процедурами. 1. Вывод на экран каждого второго...


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

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