programming-examples/c-sharp/DataStructures/C# Program to Create a Singly Linked Circular List.cs

137 lines
3.1 KiB
C#
Raw Normal View History

2019-11-15 12:59:38 +01:00
/*
* C# Program to Create a Singly Linked Circular List
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CSTest
{
class Circlist
{
private int currentdata;
private Circlist nextdata;
public Circlist()
{
currentdata = 0;
nextdata = this;
}
public Circlist(int value)
{
currentdata = value;
nextdata = this;
}
public Circlist Insdata(int value)
{
Circlist node = new Circlist(value);
if (this.nextdata == this)
{
node.nextdata = this;
this.nextdata = node;
}
else
{
Circlist temp = this.nextdata;
node.nextdata = temp;
this.nextdata = node;
}
return node;
}
public int Deldata()
{
if (this.nextdata == this)
{
System.Console.WriteLine("\nOnly one node!!!!");
return 0;
}
Circlist node = this.nextdata;
this.nextdata = this.nextdata.nextdata;
node = null;
return 1;
}
public void Traverse()
{
Traverse(this);
}
public void Traverse(Circlist node)
{
if (node == null)
node = this;
System.Console.WriteLine("Forward Direction!!!!");
Circlist snode = node;
do
{
System.Console.WriteLine(node.currentdata);
node = node.nextdata;
}
while (node != snode);
}
public int Gnodes()
{
return Gnodes(this);
}
public int Gnodes(Circlist node)
{
if (node == null)
node = this;
int count = 0;
Circlist snode = node;
do
{
count++;
node = node.nextdata;
}
while (node != snode);
System.Console.WriteLine("\nCurrent Node Value : " + node.currentdata.ToString());
System.Console.WriteLine("\nTotal nodes :" + count.ToString());
return count;
}
static void Main(string[] args)
{
Circlist node1 = new Circlist(1);
node1.Deldata();
Circlist node2 = node1.Insdata(2);
node1.Deldata();
node2 = node1.Insdata(2);
Circlist node3 = node2.Insdata(3);
Circlist node4 = node3.Insdata(4);
Circlist node5 = node4.Insdata(5);
node1.Gnodes();
node3.Gnodes();
node5.Gnodes();
node1.Traverse();
node3.Deldata();
node2.Traverse();
node1.Gnodes();
node3.Gnodes();
node5.Gnodes();
Console.Read();
}
}
}
/*
Only one Node!!!!!
Current Node Value : 1
Total nodes : 5
Current Node Value : 3
Total nodes : 5
Current Node Value : 5
Total nodes : 5
Forward Direction!!!!
1
2
3
4
5
Forward Direction!!!!
2
3
5
1
Current Node Value : 1
Total nodes : 4
Current Node Value : 3
Total nodes : 4
Current Node Value: 5
Total nodes : 4