Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 24.05.2019
Сообщений: 6

Перегрузить оператор -- для удаления 1 элемента из списка

24.05.2019, 22:18. Показов 2399. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код,в котором я создаю универсальный шаблон для списка.В нем надо реализовать перегрузку операторов для добавления и удаления первого элемента списка,и сравнения элементов списка на неравенство.Для добавления элемента получилось перегрузить,а с остальным беда.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp41
{   public class Genericlist<T>
    {
        private class Node
        {
            public Node(T t)
            {
                next = null;
                data = t;
            }
 
            private Node next;
            public Node Next
            {
                get { return next; }
                set { next = value; }
 
            }
            private T data;
            public T Data
            {
                get { return data; }
                set { data = value; }
            }
        }
 
        private Node head;
        public Genericlist()
        {
            head = null;
        }
        public void AddHead(T t)
        {
            Node n = new Node(t);
            n.Next = head;
            head = n;
        }
 
        
        public IEnumerator<T> GetEnumerator()
        {
            Node current = head;
            while (current != null)
            {
                yield return current.Data;
                current = current.Next;
            }
 
        }
 
 
        public static Genericlist<T> operator +(Genericlist<T> a, T b)
        {
            a.AddHead(b);
            return a;
        }
        
        public static Genericlist<T> operator--(Genericlist<T> a)
        {
            
            return a;
        }
 
    }
 
 
    class Program
    {
        static void Main(string[] args)
        {
            Genericlist<int> list = new Genericlist<int>();
            for(int x =0; x < 10; x++)
            {
                list.AddHead(x);
 
            }
            foreach (int i in list)
            {
                Console.Write(i + " ");
                
            }
            int b = 1000;
            list = list + b;
            foreach (int i in list)
            {
                Console.Write(i + " ");
 
            }
       
            Console.Read();
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.05.2019, 22:18
Ответы с готовыми решениями:

Перегрузить операцию "+" для добавления элемента в начало списка
Здравствуйте.Столкнулся с такой вот проблемой. Нужно перегрузить операцию &quot;+&quot; для добавления елемента (в данном случае числа) в начало...

Перегрузить оператор = для пользовательского класса.
Есть код класа: /// &lt;summary&gt; /// Provide work with complex numbers. /// &lt;/summary&gt; public class Complex { ...

Описать класс для хранения массива чисел. Перегрузить оператор %
Описать класс для хранения массива чисел. Перегрузить в классе оператор %, который должен находить остаток от деления элементов первого...

3
22 / 20 / 13
Регистрация: 19.07.2015
Сообщений: 99
24.05.2019, 22:40
Лучший ответ Сообщение было отмечено Animesshka как решение

Решение

Как я понял, беда не в перегрузке, а в самом удалении. Тему нужно было так и назвать.
Удаление первого элемента:
C#
1
2
3
if (a.head != null)
    a.head = a.head.Next;
return a;
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,111
Записей в блоге: 2
25.05.2019, 10:06
Animesshka, обратите внимание на сам смысл применения операторов:
  1. Операторы применяются для приводимых к друг другу типов. Допустим, 1 + 2.5 означает 1.0 + 2.5 так как int можно привести к double.
    Для Вашего кода Genericlist<T> и T, в принципе, нельзя привести друг к другу. Поэтому определение операторов между этими типами - НЕВЕРНО!
  2. Операторы не изменяют операнды, а возвращают НОВЫЙ экземпляр с результатом операции. Допустим, int x = 2, int y = x+3; не изменяет x!
    В Вашем же коде операторы изменяют исходные операнды a.AddHead(b);. Это - НЕВЕРНО!
0
Заблокирован
26.05.2019, 14:33
Цитата Сообщение от Animesshka Посмотреть сообщение
универсальный шаблон
Это терминология C++. Здесь - generic'и, что есть обобщения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.05.2019, 14:33
Помогаю со студенческими работами здесь

Описать класс для хранения массива чисел. Перегрузить в классе оператор *
Привет. Описать класс для хранения массива чисел. Перегрузить в классе оператор *, который должен находить произведение четных элементов...

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор *
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

Определить рекурсивную функцию для удаления последнего элемента списка
Определить рекурсивную функцию для удаления последнего элемента списка

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

Перегрузить оператор присваивания для класса
Помогите, пожалуйста. Требуется написать оператор присваивания для данного класса class ARRAY{ int size; double **m; public: ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru