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

Двусвязный список на языке C#

09.04.2013, 18:36. Показов 7387. Ответов 2
Метки нет (Все метки)

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

Список должен поддерживаться следующие операции:
 определение количества узлов в дереве;
 добавление нового элемента в конец списка;
 удаление элемента из списка по индексу;
 получение значения из списка по индексу;
 поиск в списке минимального и максимального значения;
 очистка списка от элементов.

Element создала в Class Library
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
namespace Elements
{
    public class Element
    {
       
        private double _value;
        private Element _prev;
        private Element _next; 
        public Element(double value)
        {
            this._value = value;
        }
        public double Value
        {
            set{ _value = value; }
            get{ return (_value); }
        }
        public Element Next
        {
            set{ this._next = value; }
            get{ return this._next; }
        }
        public Element Prev
        {
            set{ this._prev = value; }
            get{ return this._prev; }
        }
    }
}
 
далее в ConsoleApplication 
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ClassLibrary1;
 
 
namespace ConsoleApplication1
{
    public class list
    {
        private Element _head;
        private Element _tail;
        private int _countl;
        public void AddFirst( double val);
 
 
        if (_head = null)
        {
            Element e = new Element (val);
        }
        else
        {
            Element e = new Element (val);
            Element first = _head;
            _head = e;
            e.Next = first;
            first Prev = e;
        }
 
    }
        
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
Напрочь запуталась помогите доделать, если не сложно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2013, 18:36
Ответы с готовыми решениями:

Двусвязный список в языке Си
Здравствуйте,помогите пожалуйста в тете "Двусвязный список" Создать двусвязный список с ...

Переделать двусвязный список в двусвязный кольцевой
Здравствуйте, у меня єсть двусвязный список однако он не кольцевой! как это запрограммировать? и...

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

Двусвязный список (в конец двусвязного списка добавить другой список)
здравствуйте, подскажите пожалуйста, как в конец двусвязного списка добавить другой список?

2
1483 / 631 / 62
Регистрация: 31.03.2009
Сообщений: 2,035
09.04.2013, 20:18 2
Цитата Сообщение от ОльгаКузнецова Посмотреть сообщение
Напрочь запуталась помогите доделать, если не сложно.
Доделать? Ты ещё и не начинала делать то...
0
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 6
09.04.2013, 20:32  [ТС] 3
public class Node {
private object _Data;
private Node _Next;
private Node _Prev;
public object Value
{
get { return _Data; }
set { _Data = value; }
}
public Node(object Data)
{
this._Data = Data;
}
public Node Next
{
get { return this._Next; }
set { this._Next = value; }
}
public Node Prev
{
get { return this._Prev; }
set { this._Prev = value; }
}
}


class Doubly_Linked_List
{
private Node First;
private Node Current;
private Node Last;
private uint size;

public Doubly_Linked_List()
{
size = 0;
First = Current = Last = null;
}

public bool isEmpty //проверка на пустоту
{
get
{
return size == 0;
}
}

public void Insert_Index(object newElement, uint index) //вставить по индекусу
{
if (index < 1 || index > size) //вброс ошибки, если неправильный индекс
{
throw new InvalidOperationException();
}
else if (index == 1) //если начало
{
Push_Front(newElement);
}
else if (index == size) //если конец
{
Push_Back(newElement);
}
else //иначе ищем элемент с таким индексом
{
uint count = 1;
Current = First;
while (Current != null && count != index)
{
Current = Current.Next;
count++;
}
Node newNode = new Node(newElement); //создаем объект
Current.Prev.Next = newNode;
newNode.Prev = Current.Prev;
Current.Prev = newNode;
newNode.Next = Current;
}
}

public void Push_Front(object newElement)
{
Node newNode=new Node(newElement);

if (First == null)
{
First = Last = newNode;
}
else
{
newNode.Next = First;
First = newNode; //First и newNode указывают на один и тот же объект
newNode.Next.Prev = First;
}
Count++;
}

public Node Pop_Front()
{
if (First == null)
{
throw new InvalidOperationException();
}
else
{
Node temp = First;
if (First.Next != null)
{
First.Next.Prev = null;
}
First = First.Next;
Count--;
return temp;
}
}

public void Push_Back(object newElement)
{
Node newNode = new Node(newElement);

if (First == null)
{
First = Last = newNode;
}
else
{
Last.Next = newNode;
newNode.Prev = Last;
Last = newNode;
}
Count++;
}

public Node Pop_Back()
{
if (Last == null)
{
throw new InvalidOperationException();
}
else
{
Node temp = Last;
if (Last.Prev != null)
{
Last.Prev.Next = null;
}
Last = Last.Prev;
Count--;
return temp;
}
}

public void ClearList() //полностью очистить список
{
while (!isEmpty)
{
Pop_Front();
}
}

public uint Count //свойство для size
{
get { return size; }
set { size = value; }
}

public void Display() //вывести в прямом порядке
{
if (First == null)
{
Console.WriteLine("Doubly Linked List is empty");
return;
}
Current = First;
uint count=1;
while (Current != null)
{
Console.WriteLine("Element " + count.ToString()+" : " + Current.Value.ToString());
count++;
Current = Current.Next;
}
}

public void ReverseDisplay() //вывести в обратном порядке
{
if (Last == null)
{
Console.WriteLine("Doubly Linked List is empty");
return;
}
Current = Last;
uint count = 1;
while (Current != null)
{
Console.WriteLine("Element " + count.ToString() + " : " + Current.Value.ToString());
count++;
Current = Current.Prev;
}
}

public void DeleteElement(uint index){ //удалить элемент по индексу
if (index < 1 || index > size)
{
throw new InvalidOperationException();
}
else if (index == 1)
{
Pop_Front();
}
else if (index == size)
{
Pop_Back();
}
else
{
uint count = 1;
Current = First;
while (Current != null && count != index)
{
Current = Current.Next;
count++;
}
Current.Prev.Next = Current.Next;
Current.Next.Prev = Current.Prev;
}
}

public Node FindNode(object Data) //найти Node и вернуть его
{
Current = First;
while (Current != null)
{
Current = Current.Next;
}
return Current;
}

public uint GetIndex(object Data) //достать индекс по значению элемента
{
Current = First;
uint index = 1;
while (Current != null)
{
Current = Current.Next;
index++;
}
return index;

}

}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2013, 20:32

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

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

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

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

Переделать двусвязный список в односвязный список
//--------------------------------------------------------------------------- #include &lt;stdio.h&gt;...


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

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

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