Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Двусвязный_список
- {
- class Program
- {
- static int qindex = 0, qnext = 0, qlenght = 0;
- static LinkedListOfHouse[] Que = new LinkedListOfHouse[10];
- static void Main(string[] args)
- {
- Que[0] = new LinkedListOfHouse(); // Создавать в момент клика нового дома
- //AddToQue(14, 3, 0);
- Que[0].Display();
- Que[0].AddLast(3, 4);
- Que[0].AddLast(2, 2);
- Que[0].AddLast(5, 3);
- Que[0].remove(3);
- Que[0].Display();
- Console.ReadKey();
- }
- // procedure qstore(i:Integer);
- // begin
- // if (qnext+1)<>qlength then
- // begin
- // q[qnext]:=i;
- // qnext:=qnext+1;
- // if qnext=qlength then
- // qnext:=0 (* Циклический переход *)
- // end
- // else
- // writeln('Мест нет')
- //end;
- // Que[0].AddLast(22,33);
- // Que[0].AddLast(21, 35);
- static public void AddToQue(int area, int id, int idex)
- {
- if (qnext + 1 != Que.Length)
- {
- Que[idex].AddLast(area, id);
- qnext++;
- if (qnext == qlenght) {
- qnext = 0;
- }
- }
- else
- {
- Console.WriteLine("Net mect");
- }
- }
- }
- //Динамическое кольцо на оснвое массива
- //public class CQueue<T>
- //{
- // private T[] _array;
- // private int size;
- // private const int defaultCapacity = 10;
- // private int capacity;
- // private int head;
- // private int tail;
- // public CQueue()
- // {
- // capacity = defaultCapacity;
- // this._array = new T[defaultCapacity];
- // this.size = 0;
- // this.head = -1;
- // this.tail = 0;
- // }
- // public bool isEmpty() //проверка на пустоту
- // {
- // return size == 0;
- // }
- // public void Enqueue(T newElement)
- // {
- // if (this.size == this.capacity)
- // {
- // T[] newQueue = new T[2 * capacity];
- // Array.Copy(_array, 0, newQueue, 0, _array.Length);
- // _array = newQueue;
- // capacity *= 2;
- // }
- // size++;
- // _array[tail++ % capacity] = newElement;
- // }
- // public T Dequeue()
- // {
- // if (this.size == 0)
- // {
- // throw new InvalidOperationException();
- // }
- // size--;
- // return _array[++head % capacity];
- // }
- // public int Count
- // {
- // get
- // {
- // return this.size;
- // }
- // }
- //}
- class LinkedListOfHouse
- {
- private Apartaments Head;
- //private Apartaments Current;
- // private Apartaments Last;
- private uint size;
- public LinkedListOfHouse()
- {
- size = 0;
- Head = null;
- }
- public bool isEmpty //проверка на пустоту
- {
- get
- {
- return size == 0;
- }
- }
- public void AddHead(int newElement, int newElement1 )
- {
- Head = new Apartaments(newElement, newElement1);
- //Apartaments newApartaments = new Apartaments(newElement, newElement1);
- //if (Head == null)
- //{
- // // Head = Last = newApartaments;
- // Head = newApartaments;
- //}
- //else
- //{
- // newApartaments.Next = Head;
- // Head = newApartaments; //Head и newApartaments указывают на один и тот же объект
- // newApartaments.Next.Prev = Head;
- //}
- //Count++;
- } // Добавить в начало
- public Apartaments DeleteHead()
- {
- if (Head == null)
- {
- throw new InvalidOperationException();
- }
- else
- {
- Apartaments temp = Head;
- if (Head.Next != null)
- {
- Head.Next.Prev = null;
- }
- Head = Head.Next;
- Count--;
- return temp;
- }
- } // Удалить с первый элемент
- public void AddLast(int newElement,int newElement1) {
- //{
- // Apartaments newApartaments = new Apartaments(newElement, newElement1);
- // if (Head == null)
- // {
- // // Head = Last = newApartaments;
- // Head = newApartaments;
- // newApartaments.Prev = Head;
- // Head.Prev = newApartaments;
- // }
- if (Head == null) AddHead(newElement, newElement1);
- else
- {
- if (Head != null)
- {
- Apartaments tmp = Head;
- while (tmp.Next != null) tmp = tmp.Next;
- tmp.Next = new Apartaments(newElement, newElement1);
- }
- // Last.Next = newApartaments;
- // newApartaments.Prev = Last;
- // Last = newApartaments;
- }
- Count++;
- } // Добавить в конец
- public Apartaments DeleteLast()
- {
- if (Head.Prev.Prev == null)
- {
- throw new InvalidOperationException();
- }
- else
- {
- Apartaments temp = Head;
- if (Head.Prev.Prev != null)
- {
- Head.Prev.Next = null;
- }
- Head = Head.Prev.Prev;
- Count--;
- return temp;
- }
- } // Удалить элемент с конца
- public void remove(int key)
- {
- if (Head == null) throw new InvalidOperationException();
- if (Head.ApartamentIDGS.Equals(key))
- {
- Head = Head.Next;
- return;
- }
- Apartaments cur = Head;
- Apartaments prev = null;
- while (cur != null && !cur.ApartamentIDGS.Equals(key))
- {
- prev = cur;
- cur = cur.Next;
- }
- if (cur == null) Console.WriteLine("cannot delete");
- //delete cur node
- prev.Next = cur.Next;
- }
- public void ClearList() //полностью очистить список
- {
- while (!isEmpty)
- {
- DeleteHead();
- }
- }
- public uint Count //свойство для size
- {
- get { return size; }
- set { size = value; }
- }
- public void Display() //вывести в прямом порядке
- {
- if (Head == null)
- {
- Console.WriteLine("Doubly Linked List is empty");
- return;
- }
- // Current = Head;
- // uint count = 1;
- //while (Current != null)
- //{
- // Console.WriteLine("Element " + count.ToString() + " : AREA =" + Current.AreaGS.ToString() + " ID = " + Current.ApartamentIDGS.ToString());
- // count++;
- // Current = Current.Next;
- //}
- while (Head != null)
- {
- Console.WriteLine(" : AREA =" + Head.AreaGS.ToString() + " ID = " + Head.ApartamentIDGS.ToString());
- Head = Head.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)
- // {
- // DeleteHead();
- // }
- // else if (index == size)
- // {
- // DeleteLast();
- // }
- // else
- // {
- // uint count = 1;
- // Current = Head;
- // while (Current != null && count != index)
- // {
- // Current = Current.Next;
- // count++;
- // }
- // Current.Prev.Next = Current.Next;
- // Current.Next.Prev = Current.Prev;
- // }
- //}
- //public Apartaments FindApartaments(object Data) //найти Apartaments и вернуть его
- //{
- // Current = Head;
- // while (Current != null)
- // {
- // Current = Current.Next;
- // }
- // return Current;
- //}
- //public uint GetIndex(object Data) //достать индекс по значению элемента
- //{
- // Current = Head;
- // uint index = 1;
- // while (Current != null)
- // {
- // Current = Current.Next;
- // index++;
- // }
- // return index;
- //}
- }
- public class Apartaments
- {
- private Apartaments _Next;
- private Apartaments _Prev;
- private int Area;
- private int ApartamentID;
- public int AreaGS
- {
- get { return Area; }
- set { Area = value; }
- }
- public int ApartamentIDGS
- {
- get { return ApartamentID; }
- set { ApartamentID = value; }
- }
- public Apartaments(int Area, int ApartamentID) // Вот тут добавление
- {
- this.ApartamentID = ApartamentID;
- this.Area = Area;
- }
- public Apartaments Next
- {
- get { return this._Next; }
- set { this._Next = value; }
- }
- public Apartaments Prev
- {
- get { return this._Prev; }
- set { this._Prev = value; }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement