SHARE
TWEET
Untitled
a guest
Jan 29th, 2018
63
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Lista_dwukierunkowa
- {
- class Program
- {
- public class Węzeł
- {
- public int value;
- public Węzeł poprzedniWęzeł;
- public Węzeł następnyWęzeł;
- }
- public class DwukierunkowaLista
- {
- public Węzeł głowa;
- public DwukierunkowaLista()
- {
- głowa = null;
- }
- public bool CzyPusta
- {
- get
- {
- return głowa == null;
- }
- }
- public Węzeł Dodaj(int value)
- {
- Węzeł temp = new Węzeł();
- temp.value = value;
- temp.następnyWęzeł = głowa;
- if (głowa != null)
- głowa.poprzedniWęzeł = temp;
- głowa = temp;
- return temp;
- }
- public void InsertAfter(Węzeł prev_Node, int new_data)
- {
- /*1. check if the given prev_node is NULL */
- if (prev_Node == null)
- {
- throw new Exception("The given previous node cannot be NULL ");
- return;
- }
- /* 2. allocate node
- * 3. put in the data */
- Węzeł new_node = new Węzeł();
- new_node.value = new_data;
- /* 4. Make next of new node as next of prev_node */
- new_node.następnyWęzeł = prev_Node.następnyWęzeł;
- /* 5. Make the next of prev_node as new_node */
- prev_Node.następnyWęzeł = new_node;
- /* 6. Make prev_node as previous of new_node */
- new_node.poprzedniWęzeł = prev_Node;
- /* 7. Change previous of new_node's next node */
- if (new_node.następnyWęzeł != null)
- new_node.następnyWęzeł.poprzedniWęzeł = new_node;
- }
- public void InsertAfter(int value, int new_data)
- {
- if (głowa == null)
- {
- throw new Exception("Lista pusta!");
- }
- Węzeł prev_Node = głowa;
- while (prev_Node != null)
- {
- if (prev_Node.value == value)
- {
- break;
- }
- prev_Node = prev_Node.następnyWęzeł;
- }
- /*1. check if the given prev_node is NULL */
- if (prev_Node == null)
- {
- throw new Exception("The given previous node cannot be NULL ");
- return;
- }
- /* 2. allocate node
- * 3. put in the data */
- Węzeł new_node = new Węzeł();
- new_node.value = new_data;
- /* 4. Make next of new node as next of prev_node */
- new_node.następnyWęzeł = prev_Node.następnyWęzeł;
- /* 5. Make the next of prev_node as new_node */
- prev_Node.następnyWęzeł = new_node;
- /* 6. Make prev_node as previous of new_node */
- new_node.poprzedniWęzeł = prev_Node;
- /* 7. Change previous of new_node's next node */
- if (new_node.następnyWęzeł != null)
- new_node.następnyWęzeł.poprzedniWęzeł = new_node;
- }
- public void Search(int data)
- {
- int position = 0;
- if (głowa == null)
- {
- throw new Exception("Lista pusta!");
- }
- Węzeł temp = głowa;
- while (temp != null)
- {
- position++;
- if (temp.value == data)
- {
- Console.WriteLine("Element znajduje się na: " + position);
- return;
- }
- temp = temp.następnyWęzeł;
- }
- }
- public Węzeł Usun()
- {
- Węzeł temp = głowa;
- if (głowa != null)
- {
- głowa = głowa.następnyWęzeł;
- if (głowa != null)
- {
- głowa.poprzedniWęzeł = null;
- }
- }
- return temp;
- }
- public override string ToString()
- {
- Węzeł currentLink = głowa;
- Console.Write("Head");
- while (currentLink != null)
- {
- Console.Write(" " + currentLink.value + " -> " );
- currentLink = currentLink.następnyWęzeł;
- }
- Console.Write("Tail");
- return "";
- }
- }
- public static void Main()
- {
- DwukierunkowaLista dl = new DwukierunkowaLista();
- dl.Dodaj(5);
- dl.Dodaj(4);
- dl.Dodaj(3);
- dl.Dodaj(2);
- dl.Dodaj(1);
- dl.Dodaj(0);
- //dl.InsertAfter(dl.głowa.następnyWęzeł.następnyWęzeł,76);
- dl.InsertAfter(2, 42);
- dl.InsertAfter(42, 3);
- //dl.Search(1);
- //dl.Usun();
- //dl.Usun();
- Console.WriteLine(dl.CzyPusta);
- Console.WriteLine(dl);
- Console.ReadKey();
- }
- }
- }
RAW Paste Data

