Я пытаюсь создать Связанный список Stack with Pop и Push функциональность. Метод Push работает, но Pop нет. Я не могу понять, где вернуть значение внутри него, я думаю, что он должен работать, когда это разобрано (извините за плохую формулировку).Связанный список стек Метод pop
Вот мой код:
class Program
{
int nextFree;
int End;
int Start;
Names[] Stack;
Names greg = new Names();
Names matt = new Names();
Names jack = new Names();
Names fred = new Names();
public struct Names
{
public Int32 pointer;
public string data;
}
static void Main(string[] args)
{
Program prog = new Program();
do
{
prog.DisplayMenu();
}
while (true);
}
public void DisplayMenu()
{
Int32 userInput = 0;
Console.WriteLine("Linear Stack");
Console.WriteLine("1: Add to stack");
Console.WriteLine("2: Delete from stack");
userInput = Int32.Parse(Console.ReadLine());
switch (userInput)
{
case 1:
this.Push();
break;
case 2:
this.Pop();
break;
}
}
public Program()
{
Stack = new Names[6];
greg.data = "Greg";
greg.pointer = 1;
matt.data = "Matt";
matt.pointer = 2;
jack.data = "Jack";
jack.pointer = 3;
fred.data = "Fred";
fred.pointer = -1;
Stack[0] = greg;
Stack[1] = matt;
Stack[2] = jack;
Stack[3] = fred;
nextFree = 4;
End = 5;
Start = 0;
}
public string Pop()
{
string value = string.Empty;
if (nextFree == -1)
{
Console.WriteLine("Stack is empty");
Console.ReadLine();
}
else
{
Names thisNode = Stack[End];
int temp = End;
End = thisNode.pointer;
thisNode.pointer = nextFree;
nextFree = temp;
}
this.ListAllNames();
return value;
}
public void Push()
{
if (nextFree >= Stack.Length)
{
Console.WriteLine("Stackoverflow, to many elements for the stack");
Console.ReadLine();
}
else
{
Console.WriteLine("Enter a name to be added");
string input = Console.ReadLine();
Stack[nextFree].data = input;
Stack[nextFree].pointer = End;
End = nextFree;
nextFree++;
}
this.ListAllNames();
}
public void ListAllNames()
{
foreach (Names name in Stack)
{
Console.WriteLine("Name:" + name.data);
}
}
}
}
Домашнее задание? (Если это так, вы можете сделать еще кое-что, чтобы улучшить свой код). – R0MANARMY
Если это должен быть связанный список, почему вы используете массив? –
@ R0MANARMY Да, я уверен, что есть немало вещей, так как, будем честными, это не так хорошо закодировано: P. Мне просто нужно заставить поп-метод работать, тогда я собираюсь приукрасить его и сделать его более эффективным, если смогу. – user2852418