1
This commit is contained in:
parent
d052f9a608
commit
760763c667
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,7 +1,9 @@
|
||||
{
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
"",
|
||||
"\\KursiveWork",
|
||||
"\\KursiveWork\\KursiveWork"
|
||||
],
|
||||
"SelectedNode": "\\C:\\Users\\ivans\\Source\\Repos\\KurseWork",
|
||||
"SelectedNode": "\\KursiveWork\\KursiveWork\\infoform.cs",
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
BIN
.vs/slnx.sqlite
BIN
.vs/slnx.sqlite
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -58,12 +58,13 @@ public class LinkedList
|
||||
{
|
||||
return new LinkedListState(this);
|
||||
}
|
||||
|
||||
|
||||
// Метод для возврата в определенное состояние
|
||||
public void RestoreState(LinkedListState state)
|
||||
{
|
||||
head = state.Head;
|
||||
}
|
||||
public void RestoreState(LinkedListState state)
|
||||
{
|
||||
head = state.Head;
|
||||
}
|
||||
|
||||
// Метод для выполнения шага операции
|
||||
public void PerformStep(LinkedListParameters parameters)
|
||||
|
@ -57,20 +57,57 @@ public class LinkedListStorage
|
||||
}
|
||||
|
||||
// Метод возврата в начальное состояние
|
||||
public void Reset()
|
||||
public LinkedListState Reset()
|
||||
{
|
||||
currentIndex = -1;
|
||||
currentIndex = 0;
|
||||
|
||||
// Проверка, не пуст ли список состояний
|
||||
if (states.Count > 0)
|
||||
{
|
||||
return states[currentIndex]; // Возвращаем первое состояние
|
||||
}
|
||||
else
|
||||
{
|
||||
return null; // Возвращаем null, если список пуст
|
||||
}
|
||||
}
|
||||
|
||||
// Метод сохранения состояний в файл
|
||||
|
||||
|
||||
// Вспомогательный метод для сохранения узла
|
||||
private void SaveNode(BinaryWriter writer, Node node)
|
||||
{
|
||||
if (node != null)
|
||||
{
|
||||
writer.Write(node.Data); // Записываем данные узла в двоичном формате
|
||||
SaveNode(writer, node.Next);
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.Write(-1); // Используем -1 как маркер конца списка
|
||||
}
|
||||
}
|
||||
|
||||
public void Save(string filename)
|
||||
{
|
||||
using (BinaryWriter writer = new BinaryWriter(File.Open(filename, FileMode.Create)))
|
||||
{
|
||||
writer.Write(states.Count); // Записываем количество состояний в двоичном формате
|
||||
foreach (LinkedListState state in states)
|
||||
{
|
||||
SaveNode(writer, state.Head);
|
||||
}
|
||||
}
|
||||
}
|
||||
public List<LinkedListState> Load(string filename)
|
||||
{
|
||||
states.Clear();
|
||||
currentIndex = -1;
|
||||
currentIndex = 0;
|
||||
|
||||
using (StreamReader reader = new StreamReader(filename))
|
||||
using (BinaryReader reader = new BinaryReader(File.Open(filename, FileMode.Open)))
|
||||
{
|
||||
int count = int.Parse(reader.ReadLine()); // Читаем количество состояний
|
||||
int count = reader.ReadInt32(); // Читаем количество состояний
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
states.Add(new LinkedListState(LoadNode(reader)));
|
||||
@ -80,24 +117,9 @@ public class LinkedListStorage
|
||||
return states;
|
||||
}
|
||||
|
||||
// Вспомогательный метод для сохранения узла
|
||||
private void SaveNode(StreamWriter writer, Node node)
|
||||
private Node LoadNode(BinaryReader reader)
|
||||
{
|
||||
if (node != null)
|
||||
{
|
||||
writer.WriteLine(node.Data); // Записываем данные узла в отдельной строке
|
||||
SaveNode(writer, node.Next);
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteLine(-1); // Используем -1 как маркер конца списка
|
||||
}
|
||||
}
|
||||
|
||||
// Вспомогательный метод для загрузки узла
|
||||
private Node LoadNode(StreamReader reader)
|
||||
{
|
||||
int data = int.Parse(reader.ReadLine()); // Читаем данные узла из строки
|
||||
int data = reader.ReadInt32(); // Читаем данные узла
|
||||
if (data == -1)
|
||||
{
|
||||
return null;
|
||||
@ -108,18 +130,7 @@ public class LinkedListStorage
|
||||
}
|
||||
}
|
||||
|
||||
// Метод сохранения состояний в файл
|
||||
public void Save(string filename)
|
||||
{
|
||||
using (StreamWriter writer = new StreamWriter(filename))
|
||||
{
|
||||
writer.WriteLine(states.Count); // Записываем количество состояний
|
||||
foreach (LinkedListState state in states)
|
||||
{
|
||||
SaveNode(writer, state.Head);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
15
KursiveWork/KursiveWork/MainForm.Designer.cs
generated
15
KursiveWork/KursiveWork/MainForm.Designer.cs
generated
@ -39,6 +39,7 @@
|
||||
LoadToolStripMenuItem = new ToolStripMenuItem();
|
||||
InfoToolStripMenuItem = new ToolStripMenuItem();
|
||||
toolTip1 = new ToolTip(components);
|
||||
buttonReset = new Button();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBox).BeginInit();
|
||||
menuSaveLoad.SuspendLayout();
|
||||
SuspendLayout();
|
||||
@ -73,7 +74,7 @@
|
||||
//
|
||||
// buttonNextStep
|
||||
//
|
||||
buttonNextStep.Location = new Point(553, 368);
|
||||
buttonNextStep.Location = new Point(553, 342);
|
||||
buttonNextStep.Name = "buttonNextStep";
|
||||
buttonNextStep.Size = new Size(85, 23);
|
||||
buttonNextStep.TabIndex = 5;
|
||||
@ -123,11 +124,22 @@
|
||||
InfoToolStripMenuItem.ToolTipText = "Настоятельно рекомендуется к прочтению";
|
||||
InfoToolStripMenuItem.Click += InfoToolStripMenuItem_Click;
|
||||
//
|
||||
// buttonReset
|
||||
//
|
||||
buttonReset.Location = new Point(553, 369);
|
||||
buttonReset.Name = "buttonReset";
|
||||
buttonReset.Size = new Size(85, 23);
|
||||
buttonReset.TabIndex = 8;
|
||||
buttonReset.Text = "Начало";
|
||||
buttonReset.UseVisualStyleBackColor = true;
|
||||
buttonReset.Click += buttonReset_Click;
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(800, 450);
|
||||
Controls.Add(buttonReset);
|
||||
Controls.Add(buttonPreviousStep);
|
||||
Controls.Add(buttonNextStep);
|
||||
Controls.Add(ButtonSearch);
|
||||
@ -156,5 +168,6 @@
|
||||
private ToolStripMenuItem LoadToolStripMenuItem;
|
||||
private ToolStripMenuItem InfoToolStripMenuItem;
|
||||
private ToolTip toolTip1;
|
||||
private Button buttonReset;
|
||||
}
|
||||
}
|
@ -18,7 +18,7 @@ namespace KursiveWork
|
||||
private LinkedList list;
|
||||
private LinkedListVisualizer visualizer;
|
||||
private LinkedListManager manager;
|
||||
|
||||
|
||||
private LinkedListParameters parameters;
|
||||
|
||||
|
||||
@ -27,7 +27,8 @@ namespace KursiveWork
|
||||
InitializeComponent();
|
||||
list = new LinkedList();
|
||||
visualizer = new LinkedListVisualizer();
|
||||
MessageBox.Show("Настоятельно рекомендуется ознакомиться с информацией с помощью меню сверху");
|
||||
|
||||
//MessageBox.Show("Настоятельно рекомендуется ознакомиться с информацией с помощью меню сверху");
|
||||
manager = new LinkedListManager(parameters);
|
||||
Controls.Add(pictureBox);
|
||||
pictureBox.Image = visualizer.Visualize(list.CreateState());
|
||||
@ -115,7 +116,7 @@ namespace KursiveWork
|
||||
private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveFileDialog saveFileDialog = new SaveFileDialog();
|
||||
saveFileDialog.Filter = "Файл состояний (*.txt)|*.txt"; // Изменяем фильтр на *.txt
|
||||
saveFileDialog.Filter = "Файл состояний (*.dat)|*.dat"; // Изменяем фильтр на *.txt
|
||||
saveFileDialog.Title = "Сохранить состояния";
|
||||
saveFileDialog.ShowDialog();
|
||||
|
||||
@ -128,7 +129,7 @@ namespace KursiveWork
|
||||
private void LoadToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
||||
openFileDialog.Filter = "Файл состояний (*.txt)|*.txt"; // Изменяем фильтр на *.txt
|
||||
openFileDialog.Filter = "Файл состояний (*.dat)|*.dat"; // Изменяем фильтр на *.txt
|
||||
openFileDialog.Title = "Загрузить состояния";
|
||||
openFileDialog.ShowDialog();
|
||||
|
||||
@ -142,6 +143,10 @@ namespace KursiveWork
|
||||
// Восстанавливаем первое состояние в списке list
|
||||
list.RestoreState(firstState);
|
||||
manager.storage.currentIndex = 0;
|
||||
for (int i = 0; i < loadedStates.Count; i++)
|
||||
{
|
||||
|
||||
}
|
||||
pictureBox.Image = visualizer.Visualize(firstState);
|
||||
}
|
||||
}
|
||||
@ -151,5 +156,14 @@ namespace KursiveWork
|
||||
infoform infoform = new infoform();
|
||||
infoform.ShowDialog();
|
||||
}
|
||||
|
||||
private void buttonReset_Click(object sender, EventArgs e)
|
||||
{
|
||||
manager.storage.currentIndex = 1;
|
||||
list.RestoreState(manager.storage.GetPreviousState());
|
||||
manager.storage.currentIndex = 1;
|
||||
LinkedListState state = manager.storage.GetPreviousState();
|
||||
pictureBox.Image = visualizer.Visualize(state);
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
@ -16,3 +16,21 @@ C:\Users\ivans\source\repos\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\ref
|
||||
C:\Users\ivans\source\repos\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.MainForm.resources
|
||||
C:\Users\ivans\source\repos\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.infoform.resources
|
||||
C:\Users\ivans\source\repos\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.Inputform.resources
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\bin\Debug\net7.0-windows\KursiveWork.exe
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\bin\Debug\net7.0-windows\KursiveWork.deps.json
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\bin\Debug\net7.0-windows\KursiveWork.runtimeconfig.json
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\bin\Debug\net7.0-windows\KursiveWork.dll
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\bin\Debug\net7.0-windows\KursiveWork.pdb
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.infoform.resources
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.Inputform.resources
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.MainForm.resources
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.csproj.GenerateResource.cache
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.GeneratedMSBuildEditorConfig.editorconfig
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.AssemblyInfoInputs.cache
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.AssemblyInfo.cs
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.csproj.CoreCompileInputs.cache
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.dll
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\refint\KursiveWork.dll
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.pdb
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.genruntimeconfig.cache
|
||||
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\ref\KursiveWork.dll
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
||||
bd82fc72bf5bf9486a74f04096b102bf02a148cd
|
||||
d6f8afed7b6068eca92bf941c29c08f3033fcca7
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user