Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 05.04.2012
Сообщений: 35
1

Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка?

24.06.2012, 15:06. Показов 1641. Ответов 10
Метки нет (Все метки)

Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка?

Вот сам список:
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
#include <conio.h>
#include "iostream"
#include <time.h>
using namespace std;
 
struct node
{
int value;
node *next;
};
 
int main()
{
int a;
srand(time(NULL));
cout<<"Vvedite kol-vo elementov spiska";
cin>>a;
 
node* head;
node*c;
 
head= new node;
head ->value=5;
node* tmp;
node* tmp1;
tmp=head;
for(int i=0 ;i<a-1;i++)
{
tmp1=new node;
tmp1->value=rand()%10+1;
tmp->next=tmp1;
tmp1->next=NULL;
tmp=tmp1;
}
cout<<"Spisok...";
cout<<endl;
for(tmp1=head;tmp1!=NULL;tmp1=tmp1->next)
cout<<tmp1->value<<" ";
cout<<endl;
 
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2012, 15:06
Ответы с готовыми решениями:

Имеется список, элементами которого являются вещественные числа. Добавить в начало списка элемент, равный среднему геоме
Имеется список, элементами которого являются вещественные числа. Добавить в начало списка элемент,...

Создать список, ввести элемент и добавить этот элемент в начало списка
создать список,ввести элемент и добавить этот элемент в начало списка

Удалить из списка заданный элемент, добавить в конец новый элемент, напечатать список в обратном порядке
Прошу помощи! Пусть дан циклический двунаправленный список, с информативным полем - целое число:...

Программа должна уметь по команде создать односвязный список, добавить элемент в начало, середину или конец
Доброго времени суток всем читающим. Поступил на мехмат, но больше всего мозги делают с...

10
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 15:29 2
Parmaster, Юзай stl и не парься)
0
0 / 0 / 1
Регистрация: 05.04.2012
Сообщений: 35
24.06.2012, 17:01  [ТС] 3
Это как?)
0
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 17:04 4
Parmaster, уже готовые контейнеры.
загугли
C++ vector
C++ list
0
95 / 95 / 5
Регистрация: 10.04.2011
Сообщений: 256
24.06.2012, 17:32 5
Цитата Сообщение от Parmaster Посмотреть сообщение
Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка?
Присваиваешь полю next у элемента, который должен находиться перед добавляемым в список, указатель на этот, добавляемый, элемент. А в поле next у нового элемента пихаешь указатель на элемент, который должен следовать за ним. В общих чертах как-то так

C++
1
2
3
4
5
6
7
8
node* newE = new node;
newE->value = 4;
tmp1 = head;
for(int i(0); i < 2; ++i) tmp1 = tmp1->next;
tmp2 = tmp1->next;
tmp1->next = newE;
tmp1 = tmp1->next;
newE->next = tmp2;
1
0 / 0 / 1
Регистрация: 05.04.2012
Сообщений: 35
24.06.2012, 17:44  [ТС] 6
Цитата Сообщение от zuq Посмотреть сообщение
Присваиваешь полю next у элемента, который должен находиться перед добавляемым в список, указатель на этот, добавляемый, элемент. А в поле next у нового элемента пихаешь указатель на элемент, который должен следовать за ним. В общих чертах как-то так

C++
1
2
3
4
5
6
7
8
node* newE = new node;
newE->value = 4;
tmp1 = head;
for(int i(0); i < 2; ++i) tmp1 = tmp1->next;
tmp2 = tmp1->next;
tmp1->next = newE;
tmp1 = tmp1->next;
newE->next = tmp2;
C++
1
2
cout << "Vvedite 2 elementa, kotorye nado vstavit mejdu 1 i 2" << endl;
cin>>b[1]>>b[2];
Вот я ввожу b[1] и b[2], как мне их вставить между 1 и 2 элементами?
0
95 / 95 / 5
Регистрация: 10.04.2011
Сообщений: 256
24.06.2012, 17:54 7
Цитата Сообщение от Parmaster Посмотреть сообщение
Вот я ввожу b[1] и b[2], как мне их вставить между 1 и 2 элементами?
C++
1
2
3
4
5
6
7
8
9
int val;
std::cout << "Введите значение элемента, который необходимо вставить между первым и вторым: ";
std::cin >> val;
node* newE = new node;      // Новый элемент
newE->value = val;
 
tmp1        = head->next;   // Указатель на второй элемент
head->next   = newE;        // Теперь после первого элемента следует добавленый
newE->next  = tmp1;         // После нового элемента следует второй
Так - если добавлять один элемент. С двумя не сложнее.
1
0 / 0 / 1
Регистрация: 05.04.2012
Сообщений: 35
24.06.2012, 18:01  [ТС] 8
длтя второго tmp1 = head->next->next?
О, я понял, сначала вставлю второй, а потом так же вставлю первый! Ушел пробовать
0
95 / 95 / 5
Регистрация: 10.04.2011
Сообщений: 256
24.06.2012, 18:03 9
Цитата Сообщение от Parmaster Посмотреть сообщение
длтя второго tme1 = head->next->next?
Можно и так.
0
0 / 0 / 1
Регистрация: 05.04.2012
Сообщений: 35
24.06.2012, 18:05  [ТС] 10
Дааа, работает! Спасибо большое, zuq
0
1317 / 979 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
24.06.2012, 18:05 11
Можно сделать вот так

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
#include <iostream> 
#include <algorithm> 
#include <deque>
#include <vector>
using namespace std;
 
int main ()
{ 
    deque<int> deq; // дек очередь с двухстрорнним доступом
 
    deq.push_back(11); // добавляем в очередь элементы
    deq.push_back(12);
    deq.push_back(13);
    deq.push_back(14);
    deq.push_back(15);  
    deq.push_back(16);   
 
    for ( int i = 0; i < deq.size(); i++) // выводим на экран очередь
        cout << deq[i] << " "; 
    cout << endl;
 
    deq.insert(deq.begin()+3, 100); // вставляем элемент 100 в середину
 
    for ( int j = 0; j < deq.size(); j++) // выводим на экран
        cout << deq[j] << " ";
    cout << endl;
    return 0;
}
0
24.06.2012, 18:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.06.2012, 18:05

Сформировать список L и перенести в конец списка его первый элемент
Сформировать список L: - перенести в конец списка его первый элемент; - в списке из каждой группы...

Двусвязный список (в конец двусвязного списка добавить другой список)
здравствуйте, подскажите пожалуйста, как в конец двусвязного списка добавить другой список?

Дан список с произвольными элементами. Заменить каждый элемент на Т ,если элемент - список
Дан список с произвольными элементами. Заменить каждый элемент на Т ,если элемент - список. И на...

Список: как можно добавлять отсутствующий элемент в связанные списки
Добрый вечер, Уважаемые Гуру. Необходима ваша помощь. Создаю базу для ведения учета документов, но...

При добавлении в существующий список, новые записи добавлять в начало
Как сделать так, чтобы при добавлении в существующий список, новые записи добавлялись в начало? ...

Односвязный список: добавление элементов в начало и в конец
добавление элементов в начало функции и в конце с помошью функции прошу помоч. program Project1;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru