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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
gulllak
45 / 1 / 0
Регистрация: 09.10.2012
Сообщений: 66
#1

Добавление элемента в список - C++

29.05.2014, 01:58. Просмотров 1970. Ответов 0
Метки нет (Все метки)

Здравствуйте. Написал код в котором имеются функции добавления элемента в конец списка, вывод первого элемента в списке, удаление определенного элемента из списка и вывод всего списка.

В задании осталось добавить функцию Insert (x, p, L) - "добавление элемента x в позицию p в списке L." Вот собственно с этим не могу разобраться. Помогите пожалуйста!

Вот мой код:
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
112
113
114
115
116
117
#include <iostream>
using namespace std;
 
struct List
{
    double a;
    List *next;
};
 
List* Read(List *L)
{
    List *a = new List;
    a->next = NULL;
    cout << "Введите элемент: ";
    cin >> a->a;
    if (L == NULL)
    {
        L = a;
    }
    else
    {
        List *c = L;
        while (c->next != NULL) c = c->next;
        c->next = a;
    }
    return L;
}
 
void Printlist(List *L)
{
    while (L != NULL)
    {
        cout << L->a << " ";
        L = L->next;
    }
    cout << endl;
}
 
List* End(List *L)
{
    while (L != NULL)
    {
        L = L->next;
    }
    return L;
}
 
List* First(List *L)
{
    return L;
}
 
void Delete(int p, List *&L)
{
    List*& a = L;
    List* b = a->next;
    if (p == 1) {
        a = a->next;
        cout << "Элемент удален" << endl;
    }
    else{
 
        while (p>2)
        {
            p--;
            a = a->next;
            b = b->next;
            if (b == NULL) break;
        }
        if (b != NULL) {
            a->next = b->next;
            cout << "Элемент удален" << endl;
        }
        else cout << "Такой позиции нет" << endl;
    }
}
 
void menu(List *&L)
{
    int c;
    do
    {
        system("cls");
        cout << "Меню: " << endl;
        cout << "1-Ввести элемент" << endl << "2-Delete(p,L)" << endl << "3-First(L)" << endl;
        cout << "4-Printlist(L)" << endl;
        cout << "Введите команду: ";
        cin >> c;
        switch (c)
        {
        case 1:
            L = Read(L);
            break;
        case 2:
            int p;
            cout << "Введите p: ";
            cin >> p;
            Delete(p, L);
            break;
        case 3:
            if (First(L) != NULL) cout << First(L)->a << endl; else cout << "Список пуст" << endl;
            break;
        case 4:
            Printlist(L);
            break;
        }
        system("PAUSE");
    } while (c != 0);
}
int main()
{
    setlocale(LC_ALL, "Rus");
    List* list = NULL;
    menu(list);
    system("PAUSE");
    return 0;
}
Добавлено через 22 минуты
Все! Разобрался сам, вот код и в нем функция, если кому пригодится!

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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <iostream>
using namespace std;
 
struct List
{
    double a;
    List *next;
};
 
List* Read(List *L)
{
    List *a = new List;
    a->next = NULL;
    cout << "Введите элемент: ";
    cin >> a->a;
    if (L == NULL)
    {
        L = a;
    }
    else
    {
        List *c = L;
        while (c->next != NULL) c = c->next;
        c->next = a;
    }
    return L;
}
 
void Printlist(List *L)
{
    while (L != NULL)
    {
        cout << L->a << " ";
        L = L->next;
    }
    cout << endl;
}
 
List* End(List *L)
{
    while (L != NULL)
    {
        L = L->next;
    }
    return L;
}
 
List* First(List *L)
{
    return L;
}
 
void add(List *&top, int pos, int x)
{
    int j = 1;
    int i; List *pnew, *p = top;
    pnew = new List; pnew->a = x;
    if (pos <= 1 || top == NULL)
    {
        pnew->next = top; top = pnew;
    }
    else
    {
        for (i = 1; i<pos - 1; i++)
        if (p->next != NULL)
        {
            p = p->next;
            j++;
        }
        if (pos <= j + 1)
        {
            pnew->next = p->next; p->next = pnew;
        }
    }
}
 
void Delete(int p, List *&L)
{
    List*& a = L;
    List* b = a->next;
    if (p == 1) {
        a = a->next;
        cout << "Элемент удален" << endl;
    }
    else{
 
        while (p>2)
        {
            p--;
            a = a->next;
            b = b->next;
            if (b == NULL) break;
        }
        if (b != NULL) {
            a->next = b->next;
            cout << "Элемент удален" << endl;
        }
        else cout << "Такой позиции нет" << endl;
    }
}
 
void menu(List *&L)
{
    int c;
    do
    {
        system("cls");
        cout << "Меню: " << endl;
        cout << "1-Ввести элемент" << endl << "2-Delete(p,L)" << endl << "3-First(L)" << endl;
        cout << "4-Printlist(L)" << endl;
        cout << "5-Insert(x,p,L)" << endl;
        cout << "Введите команду: ";
        cin >> c;
        switch (c)
        {
        case 1:
            L = Read(L);
            break;
        case 2:
            int p;
            cout << "Введите p: ";
            cin >> p;
            Delete(p, L);
            break;
        case 3:
            if (First(L) != NULL) cout << First(L)->a << endl; else cout << "Список пуст" << endl;
            break;
        case 4:
            Printlist(L);
            break;
        case 5:
            int pos, x;
            cout << "Введите номер позиции для вставки: ";
            cin >> pos;
            cout << "Введиде значение элемента для вставки: ";
            cin >> x;
            add(L, pos, x);
        }
        system("PAUSE");
    } while (c != 0);
}
int main()
{
    setlocale(LC_ALL, "Rus");
    List* list = NULL;
    menu(list);
    system("PAUSE");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 01:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавление элемента в список (C++):

Добавление элемента в список - C++
Spis2* put(Spis2 *current, int info) { Spis2 *temp = new Spis2; temp-&gt;info = info; temp-&gt;next = current; temp-&gt;prev = NULL; ...

Добавление элемента в список - C++
У меня есть список, пока в нем функции вывода данных print, добавление add и вывод первого Begin() и последнего End() элементов. struct...

Добавление элемента в список по номеру - C++
Помогите, пожалуйста, разобраться, как определить номера элементов односвязного кольцевого списка. Это мне надо, чтобы сделать функцию...

Добавление элемента в двусвязный список - C++
двусвязный список, как сделать добавление элемента? пока вот что сочинил. /*Список*/ struct list_item_t { list_item_t...

Добавление нового элемента в список - C++
Добавить новый элемент в список после максимального ключа. У меня возникла проблема. Я не могу сдвинуть элемент. Например задаю 23 29...

Добавление в список нового элемента - C++
Всем доброе время суток. Мне нужна помощь, есть задание: нужно добавить в список новый элемент, после элемента, совпадающего с ключем x,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2014, 01:58
Привет! Вот еще темы с ответами:

Добавление элемента в двусвязный список - C++
Здравствуйте, нужно вставить элемент в двусвязный список Написала код, но он не работает. tek=first; while(tek) {i++; ...

Не работает добавление элемента в список - C++
#include &lt;iostream&gt; using namespace std; class mas { public: int data; mas* next; mas* prev; }; class List

Добавление элемента в линейный список после 1-го, 3-го, 5-го и т.д - C++
Помогите пожалуйста, нужно написать функцию добавления в линейный список заданного элемента после 1-го, 3-го, 5-го и т.д.

Некорректное добавление элемента в двусвязный список - C++
Добрый день! Потихоньку начал разбираться с двусвязным списком. Пока что реализовал только пару функций: добавление элемента списка и вывод...


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

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

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