0
我寫了一段代碼來實現一個鏈表,並在一個位置添加一個新節點。爲什麼插入功能不工作?
public class Node
{
//this is the class which creates each node.
public Node NextInstance; //this is the instance which creates the node.
public object data; // this will have the data
public Node(object data) //Constructer
{
this.data = data;
}
public Node()
{
}
}
public class LinkedList
{
Node Head; // this is for the head instance.
Node Current;
Node temp1;
// Add the method which will create a node
public void Add_Node(Node N)
{
if (Head == null)
{
//if the head is null, set the first instance to head
Head = N; // "First" = Head
Current = Head; // Set the Current to Head; Current = "First"
}
else
{
Current.NextInstance = N; // Current.NextInstance = "Second";
Current = Current.NextInstance; //Current = "Second";
}
}
public void Print_Nodes()
{
//this is the method to print the instance
temp1 = Head;
while (Head != null)
{
//just traverse
Console.WriteLine(Head.data);
Head = Head.NextInstance;
}
}
public void Insert_Node(int position, string Val)
{
Node T = new Node(Val);
Node temp;
//T.data = Val;
int k = 0;
Head = temp1;
while (Head != null)
{
k += 1;
if (k == position)
{
temp = Head;
Head = T;
Head.NextInstance = temp;
}
Head = Head.NextInstance;
}
}
}
class Program
{
static void Main(string[] args)
{
LinkedList LL = new LinkedList();
LL.Add_Node(new Node("First"));
LL.Add_Node(new Node("Second"));
LL.Add_Node(new Node("Third"));
//LL.Print_Nodes();
LL.Insert_Node(2, "Shef");
LL.Print_Nodes();
Console.ReadLine();
}
}
在Insert_Node
的代碼無法正常工作。任何人都可以糾正我嗎?
爲什麼當框架提供一個時需要實現自己? –
在Insert_Mode方法中,「Head = temp1」行非常值得懷疑:除非position = 0,否則不應更改頭部 –
您得到什麼錯誤?爲什麼不使用內置的'LinkedList'類? –
sharoz