Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
bogdanoff
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 9
#1

Линейный однонаправленный список. Описать процедуру добавления одного или нескольких элементов

04.07.2013, 11:02. Просмотров 723. Ответов 1
Метки нет (Все метки)

Читая целые числа из текстового файла, создать линейный односвязный список. Описать процедуру добавления одного или нескольких элементов в список. Добавить новый элемент перед каждым элементом с заданным
значением
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 11:02
Ответы с готовыми решениями:

Линейный однонаправленный список. Удаление элементов
Создать линейный однонаправленный список. Удалить из него все символы 'p' перед...

Линейный однонаправленный список
ПОМОГИТЕ СДЕЛАТЬ ПОЖАЛУЙСТА Читая целые числа из текстового файла, создать...

Линейный однонаправленный список
Добрый вечер! Задача: L – линейный однонаправленный список Проверить,...

Однонаправленный линейный список
здравствуйте! помогите помочь написать задача или киньте ссылку по её решению....

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

1
Vladimir.
158 / 158 / 48
Регистрация: 24.11.2009
Сообщений: 375
07.07.2013, 15:49 #2
Лучший ответ Сообщение было отмечено bogdanoff как решение

Решение

на примере простых чисел:
input.txt
31
37
41
43
47
53

код
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
[url]http://www.cyberforum.ru/cpp-beginners/thread917467.html[/url]
Читая целые числа из текстового файла, создать линейный односвязный список. Описать процедуру добавления одного или нескольких элементов в список. Добавить новый элемент перед каждым элементом с  заданным
значением
*/
#include <fstream>
#include <iostream>
#include <string>
 
struct Nodes{
    int data;
    Nodes* next;
};
 
class LinkedLists{
    public:
        LinkedLists(){first_ptr = NULL;};
        ~LinkedLists();
        void    append(int obj);    //append obj to end
        void    insertBeforeValue(int value,int obj); //insert obj before value
//      void    extend(???);
        void    test_print();       // print list content to stdout. Self-control function
    private:
        Nodes* first_ptr;
};
 
void fileToList(std::string const& filename, LinkedLists& list );
 
int main(){
    std::string filename = "input2.txt";
    LinkedLists list;
 
    fileToList(filename,list);  
    list.test_print();
 
    list.insertBeforeValue(31,1031);
    list.insertBeforeValue(47,1047);
    list.test_print();
}
 
//===========================
 
void fileToList(std::string const& filename, LinkedLists& list ){
//добавляет целые записаные в строках фаила в конец списка.
    std::ifstream f(filename.c_str());
    int temp;
    while( f.good() ){
        f >> temp;
        list.append(temp);
    }
    f.close();
    return;
}
 
//===========================
LinkedLists::LinkedLists(){
    first_ptr = NULL;
}
 
LinkedLists::~LinkedLists(){
    Nodes* tmp;
    while (first_ptr != NULL){
        tmp = first_ptr;
        first_ptr = tmp->next;
        delete tmp;
    }
}
 
void LinkedLists::append(int obj){
// append obj to end of list
    if( first_ptr == NULL ){
        first_ptr = new Nodes{obj,NULL};
        return;
    }// Else:
    Nodes* iptr = first_ptr;
    while ( iptr->next != NULL ){//go to last node
        iptr = iptr->next;
    }
    iptr->next = new Nodes{obj,NULL};
    
}
 
void LinkedLists::insertBeforeValue(int value,int obj){
//включает в список узел с obj перед каждым встреченным value
    Nodes* tmp;
    Nodes* iptr = first_ptr;
 
    if(iptr->data == value){//частный случай
        first_ptr = new Nodes{obj,iptr};
        tmp = iptr;
        iptr = iptr->next;
    }
 
    while ( iptr != NULL ){
        if ( iptr->data == value ){
            tmp->next = new Nodes{obj,iptr};
        }
        tmp = iptr;
        iptr = iptr->next;
    }
}
 
void LinkedLists::test_print(){
//вспомогательная функция. выводит содержимое списка (адреса и данные) в stdout
    Nodes* iptr = first_ptr;
    while(iptr != NULL){
        std::cout<<iptr<<'\t'<<iptr->data<<std::endl;
        iptr = iptr->next;
    }
    std::cout<<"list printed!"<<std::endl;
}


Описать процедуру добавления одного или нескольких элементов в список.
Что значит "добваить несколько элементов в список" ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 15:49

Линейный однонаправленный список
Есть программа, которая инициализирует, заполняет и удаляет список. При...

Линейный циклический однонаправленный список
Задание организовать очередь с приоритетом (у каждого элемента свой приоритет)....

Линейный однонаправленный список; ошибка сегментации
Инициализируется всего одна структура данных, затем система пишет: &quot;Ошибка...


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

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

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