daily pastebin goal
41%
SHARE
TWEET

Untitled

a guest Jan 29th, 2018 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Lista_dwukierunkowa
  8. {
  9.     class Program
  10.     {
  11.  
  12.         public class Węzeł
  13.         {
  14.             public int value;
  15.             public Węzeł poprzedniWęzeł;
  16.             public Węzeł następnyWęzeł;
  17.         }
  18.  
  19.         public class DwukierunkowaLista
  20.         {
  21.             public Węzeł głowa;
  22.  
  23.             public DwukierunkowaLista()
  24.             {
  25.                 głowa = null;
  26.             }
  27.             public bool CzyPusta
  28.             {
  29.                 get
  30.                 {
  31.                     return głowa == null;
  32.                 }
  33.             }
  34.  
  35.             public Węzeł Dodaj(int value)
  36.             {
  37.                 Węzeł temp = new Węzeł();
  38.                 temp.value = value;
  39.                 temp.następnyWęzeł = głowa;
  40.                 if (głowa != null)
  41.                     głowa.poprzedniWęzeł = temp;
  42.                 głowa = temp;
  43.  
  44.                 return temp;
  45.             }
  46.             public void InsertAfter(Węzeł prev_Node, int new_data)
  47.             {
  48.  
  49.                 /*1. check if the given prev_node is NULL */
  50.                 if (prev_Node == null)
  51.                 {
  52.                     throw new Exception("The given previous node cannot be NULL ");
  53.                     return;
  54.                 }
  55.  
  56.                 /* 2. allocate node
  57.                 * 3. put in the data */
  58.                 Węzeł new_node = new Węzeł();
  59.                 new_node.value = new_data;
  60.                 /* 4. Make next of new node as next of prev_node */
  61.                 new_node.następnyWęzeł = prev_Node.następnyWęzeł;
  62.  
  63.  
  64.                 /* 5. Make the next of prev_node as new_node */
  65.                 prev_Node.następnyWęzeł = new_node;
  66.  
  67.                 /* 6. Make prev_node as previous of new_node */
  68.                 new_node.poprzedniWęzeł = prev_Node;
  69.  
  70.                 /* 7. Change previous of new_node's next node */
  71.                 if (new_node.następnyWęzeł != null)
  72.                     new_node.następnyWęzeł.poprzedniWęzeł = new_node;
  73.             }
  74.             public void InsertAfter(int value, int new_data)
  75.             {
  76.  
  77.                 if (głowa == null)
  78.                 {
  79.                     throw new Exception("Lista pusta!");
  80.                 }
  81.                 Węzeł prev_Node = głowa;
  82.                 while (prev_Node != null)
  83.                 {
  84.                     if (prev_Node.value == value)
  85.                     {                  
  86.                         break;
  87.                     }
  88.                     prev_Node = prev_Node.następnyWęzeł;
  89.  
  90.                 }
  91.  
  92.  
  93.                 /*1. check if the given prev_node is NULL */
  94.                 if (prev_Node == null)
  95.                 {
  96.                     throw new Exception("The given previous node cannot be NULL ");
  97.                     return;
  98.                 }
  99.  
  100.                 /* 2. allocate node
  101.                 * 3. put in the data */
  102.                 Węzeł new_node = new Węzeł();
  103.                 new_node.value = new_data;
  104.                 /* 4. Make next of new node as next of prev_node */
  105.                 new_node.następnyWęzeł = prev_Node.następnyWęzeł;
  106.  
  107.  
  108.                 /* 5. Make the next of prev_node as new_node */
  109.                 prev_Node.następnyWęzeł = new_node;
  110.  
  111.                 /* 6. Make prev_node as previous of new_node */
  112.                 new_node.poprzedniWęzeł = prev_Node;
  113.  
  114.                 /* 7. Change previous of new_node's next node */
  115.                 if (new_node.następnyWęzeł != null)
  116.                     new_node.następnyWęzeł.poprzedniWęzeł = new_node;
  117.             }
  118.  
  119.  
  120.             public void Search(int data)
  121.             {
  122.                 int position = 0;
  123.                
  124.                 if (głowa == null)
  125.                 {
  126.                     throw new Exception("Lista pusta!");
  127.                 }
  128.                 Węzeł temp = głowa;
  129.                 while (temp != null)
  130.                 {
  131.                     position++;
  132.                     if (temp.value == data)
  133.                     {
  134.                         Console.WriteLine("Element znajduje się na: " + position);
  135.                         return;
  136.                     }
  137.                     temp = temp.następnyWęzeł;
  138.  
  139.                 }
  140.  
  141.  
  142.             }
  143.             public Węzeł Usun()
  144.             {
  145.                 Węzeł temp = głowa;
  146.                 if (głowa != null)
  147.                 {
  148.                     głowa = głowa.następnyWęzeł;
  149.                     if (głowa != null)
  150.                     {
  151.                         głowa.poprzedniWęzeł = null;
  152.                     }
  153.                 }
  154.                 return temp;
  155.             }
  156.  
  157.             public override string ToString()
  158.             {
  159.                 Węzeł currentLink = głowa;
  160.                 Console.Write("Head");
  161.                 while (currentLink != null)
  162.                 {
  163.                     Console.Write(" " + currentLink.value +  " -> " );
  164.                     currentLink = currentLink.następnyWęzeł;
  165.                        
  166.                 }
  167.                 Console.Write("Tail");
  168.                 return "";
  169.             }
  170.         }
  171.         public static void Main()
  172.         {
  173.             DwukierunkowaLista dl = new DwukierunkowaLista();
  174.             dl.Dodaj(5);
  175.             dl.Dodaj(4);
  176.             dl.Dodaj(3);
  177.             dl.Dodaj(2);
  178.             dl.Dodaj(1);
  179.             dl.Dodaj(0);
  180.             //dl.InsertAfter(dl.głowa.następnyWęzeł.następnyWęzeł,76);
  181.             dl.InsertAfter(2, 42);
  182.             dl.InsertAfter(42, 3);
  183.             //dl.Search(1);
  184.             //dl.Usun();
  185.             //dl.Usun();
  186.             Console.WriteLine(dl.CzyPusta);
  187.             Console.WriteLine(dl);
  188.             Console.ReadKey();
  189.         }
  190.  
  191.     }
  192. }
RAW Paste Data
Pastebin PRO WINTER Special!
Get 40% OFF Pastebin PRO accounts!
Top