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

Линейный список. Удалить элемент

03.04.2016, 17:33. Показов 3629. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброй вечер. Подскажите пожалуйста,как удалить элемент из списка с заданным номером?
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
#include <iostream>
#include <stdlib.h>
#include <ctime>
#include <cstdio>
#include <fstream>
using namespace std;
 
//структура динамического списка
struct LIST
{
    int young; // элементы списка
    LIST *next;
};
LIST *head = NULL;
LIST *rear = NULL;
 
//функция формирования списка
void make(char a)
{ 
    
    LIST *ptr;
    ptr = new LIST;
    if (!head) head = ptr;
    else rear->next = ptr;
    ptr->young = a;
    rear = ptr;
    rear->next = NULL;
}
 
//функция вывода на экран элементов списка
void print(void)
{
    LIST *ptr = head;
    while (ptr)
    {
        cout << ptr->young << " ";
        ptr = ptr->next;
        сout << index;
    }
    cout << endl;
}
 
//функция удаления первого элемента
void deletenhead(void)
{
    //указатель ptr устанавливаем на первый элемент 
    LIST *ptr = head;
    //указатель head устанавливает на второй элемент
    head = ptr->next;
    //первый элемент удаляем
    delete ptr;
}
 
//функция удаления последнего элемента
void deletenrear(void)
{
    //указатель ptr устанавливаем на начало списка 
    LIST *ptr = head;
    //Если в списке один элемент
    if (ptr == rear)
    {
        //то его удаляем
        delete ptr;
        //указатели rear и head обнуляем
        head = rear = NULL;
    }
    //Если в списке 2 и более элементов
    else
    {
        //указатель ptr устанавливаем на предпоследний элемент
        while (ptr->next != rear) ptr = ptr->next;
        //последний элемент удаляем
        delete rear;
        // Теперь последний элемент - это тот,
        //на который указывает ptr
        rear = ptr;
        //у последнего элемента поле next содержит NULL
        rear->next = NULL;
    }
}
 
int main()
{
    setlocale(0, "RUS");
    int n, i, b;
 
    cout << "Введите количество элементов списка: ";
    cin >> n;
    cout << "Введите  элементы списка: " << endl;
    for (i = 0; i<n; i++)
    {
        cin >> b;
        make(b);
    }
    cout << "Введенный список: ";
    print();
    deletenhead();
    cout << "Список после удаления первого элемента: ";
    print();
    deletenrear();
    cout << "Список после удаления последнего элемента: ";
    print();
    /*ofstream text("text.txt"); 
        LIST*ptr;
        ptr = rear;*/
    /*while (ptr != 0)
    {
        text << ptr->young << "\n";
        ptr->next;
    }*/
    system("pause"); 
    return(0);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2016, 17:33
Ответы с готовыми решениями:

Создать линейный односвязный список из вещественных чисел. Удалить из списка элемент перед каждым элементом со значен
Создать линейный односвязный список из вещественных чисел. Удалить из списка элемент перед каждым...

Вставить в линейный список перед элементом с заданным значением другой линейный список
Как можно вставить в линейный список перед элементом с заданным значением другой линейный список?...

Двусвязный список - Добавить элемент после заданного, удалить заданный элемент
Реализуйте списочную структуру в виде класса. работа состоит из двух частей: из класса (структуры,...

Односвязный список: удалить элемент списка, если он чётный и следующий элемент отрицательный и нечётный
Здравствуйте. Задание на односвязные списки: удалить элемент списка, если он чётный и следующий...

0
03.04.2016, 17:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2016, 17:33
Помогаю со студенческими работами здесь

Динамический двусвязный список (операции: добавить элемент после данного, удалить данный элемент …)
реализовать Динамический двусвязный список (операции: добавить элемент после данного, удалить...

Сформировать двунаправленный список. Удалить из него элемент с заданным ключом, добавить элемент с указанным номером
Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать...

Однонаправленный список. Операции: удалить элемент из заданной позиции, добавить элемент в заданную позицию,проверка на неравенство
Помогите. Есть одна написанная. Условия: Очередь. Операции: “+” добавить элемент ; “-“ удалить...

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


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

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