Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
24.06.2012, 15:06     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? #1
Как добавлять элемент в список, не в начало и не в конец, а между 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;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2012, 15:06     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка?
Посмотрите здесь:

C++ Простой список в виде массива.Как работать с элементами списка-массива через единую функцию
C++ Создать список вещественых чисел.Найти разность между наибольшим и наименьшим элементами.
C++ Линейно-однонаправленный список (удалить элемент списка по ключу)
C++ однонаправленный список элементов (удвоить каждый элемент списка)
C++ Односвязный список. Подсчитать сумму N первых элементов. Удалить эти элементы и вставить в конец списка
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
24.06.2012, 15:29     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? #2
Parmaster, Юзай stl и не парься)
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
24.06.2012, 17:01  [ТС]     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? #3
Это как?)
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
24.06.2012, 17:04     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? #4
Parmaster, уже готовые контейнеры.
загугли
C++ vector
C++ list
zuq
 Аватар для zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
24.06.2012, 17:32     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? #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;
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
24.06.2012, 17:44  [ТС]     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? #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 элементами?
zuq
 Аватар для zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
24.06.2012, 17:54     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? #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;         // После нового элемента следует второй
Так - если добавлять один элемент. С двумя не сложнее.
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
24.06.2012, 18:01  [ТС]     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? #8
длтя второго tmp1 = head->next->next?
О, я понял, сначала вставлю второй, а потом так же вставлю первый! Ушел пробовать
zuq
 Аватар для zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
24.06.2012, 18:03     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? #9
Цитата Сообщение от Parmaster Посмотреть сообщение
длтя второго tme1 = head->next->next?
Можно и так.
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
24.06.2012, 18:05  [ТС]     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? #10
Дааа, работает! Спасибо большое, zuq
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2012, 18:05     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка?
Еще ссылки по теме:

Разработать класс Итератор, методы которого: переход в начало списка, в конец, к текущему элементу списка, к с C++
C++ Чтение из файла в список, сравнение с элементами списка
C++ Список, в который можно добавить числа в начало и в конец

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

Или воспользуйтесь поиском по форуму:
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
24.06.2012, 18:05     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? #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;
}
Yandex
Объявления
24.06.2012, 18:05     Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка?
Ответ Создать тему
Опции темы

Текущее время: 23:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru