Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 13.04.2017
Сообщений: 4
1

Циклический двусвязный список

01.11.2017, 21:24. Показов 1112. Ответов 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
class MyStack
        {
            ElemSt H;
            public MyStack() : base() { }
 
            public bool Empty()
            {
                return H == null;
            }
 
            public ElemSt First()
            {
                if (Empty()) throw new Exception("Стек пустой! Нет первого элемента");
                else return H;
            }
 
            public void AddSt(InfSt data)
            {
                ElemSt el = new ElemSt(data);
                if (Empty())
                {
                    H = el;
                    el.Prev = el;
                    el.Next = el;
                }
                else
                {
                    H.Prev = el;
                    el.Next = H;
                    el.Prev = H.Prev;
                    H.Prev.Next = el;
                    H = el;
                }
                
            }
 
            public void DelSt()
            {
                if (!Empty())
                {
                    if (H.Next == null) H = null;
                    else
                    {
                        H = H.Next;
                        H.Prev = null;
                    }
                }
                else MessageBox.Show("Стек пустой!");
            }
 
            public void Show(ref TextBox tb)
            {
                tb.Text="";
                if (Empty())
                {
                    tb.Text = "Пустой стек";
                }
                else
                {
                    ElemSt temp = H;
                    do
                    {
                        tb.Text += temp.ToString() + Environment.NewLine;
                        temp = temp.Next;
                    } while (temp.Next != H);
                }
            }
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2017, 21:24
Ответы с готовыми решениями:

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

Двусвязный циклический список
Скажите как сделать список в моей программе циклическим? Как прописать файловые указатели на...

Двусвязный список
Всем привет Есть пример создания двусвязного списка ...

Двусвязный список
Приветствую всех. Искал информацию про двусвязный список нашел вот это ТЫК, кое что доже понял:)...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
3
96 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 407
01.11.2017, 22:37 2
А что в конструкторе класса ElemSt ?
0
0 / 0 / 0
Регистрация: 13.04.2017
Сообщений: 4
01.11.2017, 23:23  [ТС] 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
struct InfSt
        {
            private string name;
            private int key;
 
            public InfSt(string name, int key)
            {
                this.name = name;
                this.key = key;
            }
            public string Name
            {
                get { return name; }
                set { name = value; }
            }
 
            public int Key
            {
                get { return key; }
                set { key = value; }
            }
 
            public string Tostring()
            {
                return name + " " + key.ToString();
            }
        }
 
        class ElemSt
        {
            InfSt data;
            ElemSt next,prev;
            public ElemSt Next
            {
                get { return next; }
                set { next = value; }
            }
 
            public ElemSt Prev
            {
                get { return prev; }
                set { prev = value; }
            }
 
            public ElemSt(): base(){ }
 
            public ElemSt(InfSt data)
            {
                this.data = data;
            }
 
            public override string ToString()
            {
                return data.Tostring();
            }
        }
Конструкторы ElemSt:
C++
1
2
3
4
5
6
            public ElemSt(): base(){ }
 
            public ElemSt(InfSt data)
            {
                this.data = data;
            }
0
96 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 407
01.11.2017, 23:44 4
Ну так списка же у тебя нет , твой объект H ,после каждого добавления элемента обнавляется. У него всего лишь два поля prev и next. Ты сохранил в них значение, после чего опять вызываешь метод добавления, там создается объект el и переприсваивает значения этим же prev , next.А предыдущие значения не сохраняются.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2017, 23:44

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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

Двусвязный список
Вот задание: 1. Считать из текстового файла исходные данные и на их основе создать необходимые...

Двусвязный линейный список?
Всем доброго дня! Помогите пожалуйста. Есть задача: Дан двусвязный линейный список с целыми...

Реализовать двусвязный список
Ребята, помогите, пожалуйста, реализовать простейший двусвязный список. Никак не могу понять, как...

Двусвязный список на языке C#
В программе должны быть реализованы два типа: открытый (public) тип списка – List; внутренний...

Стек, Очередь, Двусвязный список
сначала нужно сформировать и заполнить элементами три структуры – «стек», «очередь», «двусвязный...


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

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

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