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

Не удаляется элемент односвязного списка

12.10.2023, 14:21. Показов 314. Ответов 1

Студворк — интернет-сервис помощи студентам
У меня есть подозрения что нужно использовать equals для сравнения элемента который хочу удалить, пробовал, без результатов, надеюсь на вашу помощь



Java
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
import java.util.Iterator;
import java.util.List;
import java.util.Optional;
import java.util.Scanner;
 
class Main {
 
    static Scanner scanner = new Scanner(System.in);
 
    public static void main(String[] args) {
        OneLinkedList<Student> studentList = new OneLinkedList<>();
 
        studentList.addToEnd(new Student("Gordienko", 2,3202));
        studentList.addToEnd(new Student("Tkachenko", 2, 3202));
        studentList.addToEnd(new Student("Nurzaliev", 2, 3202));
        studentList.addToEnd(new Student("Shakhullin", 2, 1103));
 
        for (Student student : studentList) {
            System.out.println(student);
        }
 
        System.out.println("Введите фамилию студента которого хотите отчислить: ");
        String lastNametoDelete = scanner.nextLine();
 
        Student studentToDelete = new Student(lastNametoDelete, 0,0);
        studentList.deleteElement(studentToDelete);
 
        for (Student student : studentList) {
            System.out.println(student);
        }
 
    }
 
    static class Student {
        String lastname;
        int kyrs;
        int group;
 
 
        public Student(String lastname, int kyrs, int group) {
            this.lastname = lastname;
            this.kyrs = kyrs;
            this.group = group;
        }
 
        @Override
        public String toString() {
            return "Student{" +
                    "lastName='" + lastname + '\'' +
                    ", kyrs=" + kyrs +
                    ", group=" + group +
                    '}';
        }
    }
 
 
    public static class OneLinkedList<T> implements Iterable<T>{
 
        ListItem<T> head;
        ListItem<T> tail;
 
        @Override
        public Iterator<T> iterator() {
            return new Iterator<T>() {
 
                ListItem<T> current = head;
 
                @Override
                public boolean hasNext() {
                    return current != null;
                }
 
                @Override
                public T next() {
                    T data = current.data;
                    current = current.next;
                    return  data;
                }
            };
        }
 
        private static class ListItem<T> {
           T data;
           ListItem<T> next;
 
        }
 
        public boolean isEmpty() {
            return head == null;
        }
 
        public void addToEnd(T item) {
            ListItem<T> newItem = new ListItem<>();
            newItem.data = item;
            if (isEmpty()) {
                head = newItem;
                tail = newItem;
            } else {
                tail.next = newItem;
                tail = newItem;
            }
        }
 
        public void deleteElement (T item) {
            ListItem<T> current = head;
            ListItem<T> previous = null;
 
            while (current.data == item) {
                if(isEmpty()) {
                    return;
                } else {
                    previous = current;
                    current = current.next;
                }
                if (current == head) {
                    head = head.next;
                } else {
                    previous.next = current.next;
                }
 
            }
            }
        }
 
 
 
 
    }
Добавлено через 21 минуту
всё! исправил
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.10.2023, 14:21
Ответы с готовыми решениями:

Некорректно удаляется последний элемент односвязного списка
void Delete(item **p) { double average = 0; item *pStudent = *p, *pTemp = NULL; while (pStudent != NULL) { for (int i =...

удалить элемент из односвязного списка
нужно удалить элемент из односвязного списка , кто-нибудь может проверить? как удалить последний элемент? ..... // if not found ...

Удалить элемент из односвязного списка
Есть односвязный список struct student { char last_name; char name; char date; int exams; double rate; };

1
8 / 5 / 3
Регистрация: 17.02.2022
Сообщений: 27
13.10.2023, 00:16
Вы создаёте новый объект Student только с фамилией, но с неправильным курсом и группой в строке:
Java
1
Student studentToDelete = new Student(lastNametoDelete, 0,0);
Затем в методе deleteElement() невозможно найти такой объект, так как ни ==, ни equals() такой объект не найдут. В таком случае нужно либо воссоздавать полностью корректный объект Student, чтобы потом с помощью equals() найти его для удаления, либо список делать не с шаблонным типом, и в проверках на удаление сравнивать не весь объект, а только фамилию.
Вообще, код можно писать достаточно чисто и красиво, чтобы даже спустя месяц он был вам понятен. Чистая структура программы помогает выявлять подобные ошибки, с которой столкнулись вы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.10.2023, 00:16
Помогаю со студенческими работами здесь

Удалить из односвязного списка элемент
Удалить из односвязного списка элемент, стоящий перед k-ым элементом списка. Написать процедуры создания, печати и обработки списка.

Удалить элемент из односвязного списка
У нас есть односвязный список и указатель на один из его элементов, как удалить этот элемент из списка, оставив список целостным ?(сделать...

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

Не удаляется последний элемент списка
Пишу игру &quot;Змейка&quot;. Проблема в следующем: у змеи не удаляется хвост и получается увеличивающаяся линия, которая идёт от &quot;хвоста&quot;,...

Не удаляется четный элемент из списка в Си
Я беру из тестового файла : 5 4 -3 8 9 1 2 7 8 Сортирую: -3 1 2 4 5 7 8 8 9 После сортировки хочу удалить все...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru