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

Работа со списками

30.12.2015, 03:11. Показов 1279. Ответов 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
class Program
    {
        static void Main(string[] args)
        {
            ListStuff.Debug();
        }
    }
 
    public class List
    {
        public class Node
        {
            public int value;
            public Node next;
            public Node prev;
        }
        public Node first;
        public void swap_pairs(List list) // 21
        {
            if (list.first == null) return;
            for (Node node = list.first; node.next != null;)
            {
                Node fake = node;
                node = node.next;
                node.next = fake;
            }
        }
        public int get_max(List list) // 28 +
        {
            Node node;
            if (list.first == null) throw new Exception("Пустой список");
            int max = list.first.value;
            for (node = list.first; node.next != null; node = node.next)
            {
                if (node.value > max)
                {
                    max = node.value;
                }
            }
            return max;
        }
        public void delete_before(Node node) //5
        {
            if (node.prev == first)
            {
                first = node;
            }
            else
            {
                node.prev.prev.next = node;
            }
            node.prev = node.prev.prev;
        }
        /*
         *  if (node.prev == null) return;
            if (node.prev.prev == null) return;
            node.prev.prev.next = node;
            node.prev = node.prev.prev;
         */
 
        public Node at_end(List list, int index) // 12
        {
            int count = 0;
            for (Node node = list.first; node != null; node = node.next) count++;
            return null;
        }
        /* создать удв. список*/
 
        public static List repeat(List list, int count)
        {          
            if (count < 1) throw new Exception("Параметр count < 1");
            List repeatedList = new List();
            Node repeatedNode = repeatedList.first;
            Node buffer = new Node();
            for (Node node = list.first.next; node != null; node = node.next)
            {
                repeatedNode.next = buffer; 
                repeatedNode.next.prev = repeatedNode;
                repeatedNode.next.value = node.value;
                repeatedNode = repeatedNode.next;
            }
            for (int i = 1; i < count; i++)
                for (Node node = list.first; node != null; node = node.next)
                {
                    repeatedNode.next = new Node();
                    repeatedNode.next.prev = repeatedNode;
                    repeatedNode.next.value = node.value;
                    repeatedNode = repeatedNode.next;
                }
 
            return repeatedList;
        }
 
        public void delete_first()
        {
            if (first == null)
            {
                throw new Exception("нельзя удалить первый элемент из пустого списка");
            }
            first = first.next;
            if (first != null)
            {
                first.prev = null;
            }
        }
        public void add_first(int value)
        {
            Node node = new Node();
            node.next = this.first;
            node.value = value;
            this.first = node;
            if (this.first.next != null)
            {
                this.first.next.prev = this.first;
            }
        }
        public void print()
        {
            var first = true;
            for (var node = this.first; node != null; node = node.next)
            {
                if (!first)
                {
                    Console.Write(" ");
                }
                first = false;
                Console.Write(node.value);
            }
            Console.WriteLine();
        }
    }
    public static class ListStuff
    {
        public static void Debug()
        {
            var list = new List();
            list.print(); // пустая строка
            list.add_first(5);
            list.add_first(7);
            list.add_first(3);
            list.add_first(6);
            list.add_first(1);
            list.print(); // 1 6 3 7 5
            list.get_max(list); // 6
            List.repeat(list, 2);
            list.print();
        }
Подскажите, как в поменять местами узлы? До этого менял .value
C#
1
2
3
4
5
6
7
8
9
10
public void swap_pairs(List list) // 21
        {
            if (list.first == null) return;
            for (Node node = list.first; node.next != null;)
            {
                Node fake = node;
                node = node.next;
                node.next = fake;
            }
        }
Поиск элемента по индексу с конца
C#
1
2
3
4
5
6
public Node at_end(List list, int index) // 12
        {
            int count = 0;
            for (Node node = list.first; node != null; node = node.next) count++;
            return null;
        }
И как удвоить список?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.12.2015, 03:11
Ответы с готовыми решениями:

Работа со списками
Создать файл,содержащий одноимерный массив структур с тремя полями: • фамилия • имя • номер...

Работа со списками
Подскажите,как написать метод поиска элемента в односвязном списке? именно прописать все самому,а...

Работа со списками
Есть список из объектов:List&lt;Obj&gt; AllObj = new List&lt;Obj&gt;();В этот список постоянно дописываются...

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

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

Рефлексия, работа со списками
Добрый день. Помогите решить задачку: Есть несколько классов такого типа: public class A { ...

Работа с одномерными списками
Не понимаю, как работать с одномерными списками. Вот пыталась что-то сделать. Подскажите как с ними...

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

Работа со списками: найти ошибку в коде
Добрый день! Коллеги, нужна помощь, буду очень благодарен. Дали такое задание: 1. Какая проблема...


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

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