Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
30 / 30 / 20
Регистрация: 28.02.2014
Сообщений: 195
1

Удалить все объекты, которые находятся в классе

04.05.2015, 19:10. Показов 1314. Ответов 7
Метки нет (Все метки)

Привет! Есть класс Element и стек объектов данного класса. Нужно удалить все объекты, которые находятся в классе. Как это сделать?

C#
1
2
3
4
5
6
7
class Element
    {
        public int index;
        public string name;
        public Element right;
        public Element left;
    }
нерабочий пример

C#
1
2
3
4
5
while (myStack.Count > 0)
            {
                Element elem = myStack.Pop() as Element;
                elem = null;
            }
помогите пожалуйста.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2015, 19:10
Ответы с готовыми решениями:

Из заданного текста удалить все фрагменты, которые находятся в фигурных скобках
С данного текста удалить все фрагменты, которые находятся в фигурных скобках.Спасибо заранее

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

Удалить все объекты и создать объекты - потомки
Как сделать клоны объекта в другом объекте? Использую метод Instantiate Есть метод public...

Удалить из заданного те символы, которые находятся в скобках ()
Дан текст. Удалить из текста те символы, которые находятся в скобках (). Сами скобки не удалять....

7
38 / 38 / 30
Регистрация: 07.04.2014
Сообщений: 219
04.05.2015, 19:13 2
C#
1
myStack.Clear() // удалит все объекты из стека
0
30 / 30 / 20
Регистрация: 28.02.2014
Сообщений: 195
04.05.2015, 19:34  [ТС] 3
Spiderman5, Опечатка.

Нужно удалить все объекты, которые находятся в стеке. не из стека удалить, а вообще. В стек записываются элементы дерева, которые необходимо удалить.
0
Эксперт .NET
15343 / 11630 / 3052
Регистрация: 17.09.2011
Сообщений: 19,468
04.05.2015, 20:04 4
Цитата Сообщение от Fantom2209 Посмотреть сообщение
не из стека удалить, а вообще. В стек записываются элементы дерева, которые необходимо удалить.
"Вообще" — это из дерева?
C#
1
2
while (stack.Count > 0)
   tree.Remove(stack.Pop());
0
30 / 30 / 20
Регистрация: 28.02.2014
Сообщений: 195
04.05.2015, 21:43  [ТС] 5
kolorotur, Ладно. Давай так. Есть дерево. Нужно написать метод, который, удалит из него элемент с конкретным индексом и все из него выходящие. Закомментировал то, как я пытался это реализовать.

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
class BinaryTree : IEnumerable, IEnumerator
    {
        private Element top;
        private Element element;
        private Int32 lastIndex;
        private Element resultSearch;
        private Stack myStack = new Stack();
 
        public void insert(string val, int index, bool route)
        {
            if (this.top == null)
            {
                this.top = new Element();
                this.top.index = lastIndex++;
                this.top.name = val;
            }
            else 
            {
                search(top, index);
                if(this.resultSearch != null)
                    if (route)
                        addChild(ref this.resultSearch.left, val);
                    else
                        addChild(ref this.resultSearch.right, val);                    
                this.resultSearch = null;
            }
        }
 
        private bool addChild(ref Element elem, string val)
        {
            if (elem == null)
            {
                elem = new Element();
                elem.name = val;
                elem.index = lastIndex++;
                return true;
            }
            else
                throw new Exception();
        }
 
        public void search(Element elem, int index)
        {
            if (elem == null)
                this.resultSearch = null;
            else
            {
                if (elem.index == index)
                    this.resultSearch = elem;
                else
                {
                    if (elem.left != null)
                        search(elem.left, index);
                    if (elem.right != null)
                        search(elem.right, index);    
                }
            }
        }
 
        //public void deleteElement(int index)
        //{
        //    search(top, index);
        //    delete(resultSearch);
        //    while (myStack.Count > 0)
        //    {
        //        Element elem = myStack.Pop() as Element;
        //        elem = null;
        //    }
        //    resultSearch = null;
        //    GC.Collect();
        //    GC.WaitForPendingFinalizers();
        //}
 
        //public void delete(Element element)
        //{
        //    myStack.Push(element);
        //    if (element.left != null)
        //        delete(element.left);
        //    if (element.right != null)
        //        delete(element.right);
        //}
 
        public object Current
        {
            get { return element.name; }
        }
 
        public void Reset()
        {
            element = new Element();
            element.left = top;
        }
 
        public bool MoveNext()
        {
            if (element.right != null)
                myStack.Push(element);
            if (element.left != null)
            {
                element = element.left;
                return true;
            }
            else 
            {
                if (myStack.Count <= 0)
                    return false;
                element = (myStack.Pop() as Element).right;
                return true;
            }
        }
 
        IEnumerator IEnumerable.GetEnumerator()
        {
            return this as IEnumerator;
        }
    }
0
Эксперт .NET
15343 / 11630 / 3052
Регистрация: 17.09.2011
Сообщений: 19,468
04.05.2015, 22:37 6
Цитата Сообщение от Fantom2209 Посмотреть сообщение
Есть дерево. Нужно написать метод, который, удалит из него элемент с конкретным индексом и все из него выходящие.
Для дерева понятие "индекс" неприменимо.
0
30 / 30 / 20
Регистрация: 28.02.2014
Сообщений: 195
04.05.2015, 22:58  [ТС] 7
kolorotur, Индекс - это поле с данными. у меня дерево имеет два поля с данными(1 индекс int, 2 название string). если Вам не нравиться поиск по индексу, то можно искать по названию и удалять все выходящие узлы.
0
Эксперт .NET
15343 / 11630 / 3052
Регистрация: 17.09.2011
Сообщений: 19,468
04.05.2015, 23:37 8
Цитата Сообщение от Fantom2209 Посмотреть сообщение
Индекс - это поле с данными. у меня дерево имеет два поля с данными(1 индекс int, 2 название string).
А, я индекс понял как порядковый номер элемента в коллекции, как у массива.

Вот тема, в которой я выкладывал реализацию двоичного дерева: https://www.cyberforum.ru/post2279116.html
Можете взять оттуда алгоритм удаления элемента.

После этого достаточно выполнять этот метод в цикле до тех пор, пока есть что удалять:
C#
1
while (tree.Remove(12));
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2015, 23:37

Удалить из строки символы, которые находятся в скобках
Строка задана с клавиатуры, удалить из строки символы, которые находятся в скобках(скобки тоже...

Удалить строки из файла которые находятся между символами <!-- и -->
Возник собственно такой вопрос, как удалить строки из файла которые находятся между символами &lt;!--...

Удалить теги ссылок, которые находятся внутри тега Tittle
Суть задачи такова: нужно удалить теги ссылок, которые находятся внутри тега Tittle К примеру...

В массиве удалить четные элементы, которые находятся между элементами k1 и k2 (вводятся с клавиатуры)
В массиве удалить четные элементы, которые находятся между элементами k1 и k2 (вводятся с...


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

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

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