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": [
|
"ExpandedNodes": [
|
||||||
""
|
"",
|
||||||
|
"\\KursiveWork",
|
||||||
|
"\\KursiveWork\\KursiveWork"
|
||||||
],
|
],
|
||||||
"SelectedNode": "\\C:\\Users\\ivans\\Source\\Repos\\KurseWork",
|
"SelectedNode": "\\KursiveWork\\KursiveWork\\infoform.cs",
|
||||||
"PreviewInSolutionExplorer": false
|
"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);
|
return new LinkedListState(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Метод для возврата в определенное состояние
|
// Метод для возврата в определенное состояние
|
||||||
public void RestoreState(LinkedListState state)
|
public void RestoreState(LinkedListState state)
|
||||||
{
|
{
|
||||||
head = state.Head;
|
head = state.Head;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Метод для выполнения шага операции
|
// Метод для выполнения шага операции
|
||||||
public void PerformStep(LinkedListParameters parameters)
|
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)
|
public List<LinkedListState> Load(string filename)
|
||||||
{
|
{
|
||||||
states.Clear();
|
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++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
states.Add(new LinkedListState(LoadNode(reader)));
|
states.Add(new LinkedListState(LoadNode(reader)));
|
||||||
@ -80,24 +117,9 @@ public class LinkedListStorage
|
|||||||
return states;
|
return states;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Вспомогательный метод для сохранения узла
|
private Node LoadNode(BinaryReader reader)
|
||||||
private void SaveNode(StreamWriter writer, Node node)
|
|
||||||
{
|
{
|
||||||
if (node != null)
|
int data = reader.ReadInt32(); // Читаем данные узла
|
||||||
{
|
|
||||||
writer.WriteLine(node.Data); // Записываем данные узла в отдельной строке
|
|
||||||
SaveNode(writer, node.Next);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
writer.WriteLine(-1); // Используем -1 как маркер конца списка
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Вспомогательный метод для загрузки узла
|
|
||||||
private Node LoadNode(StreamReader reader)
|
|
||||||
{
|
|
||||||
int data = int.Parse(reader.ReadLine()); // Читаем данные узла из строки
|
|
||||||
if (data == -1)
|
if (data == -1)
|
||||||
{
|
{
|
||||||
return null;
|
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();
|
LoadToolStripMenuItem = new ToolStripMenuItem();
|
||||||
InfoToolStripMenuItem = new ToolStripMenuItem();
|
InfoToolStripMenuItem = new ToolStripMenuItem();
|
||||||
toolTip1 = new ToolTip(components);
|
toolTip1 = new ToolTip(components);
|
||||||
|
buttonReset = new Button();
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBox).BeginInit();
|
((System.ComponentModel.ISupportInitialize)pictureBox).BeginInit();
|
||||||
menuSaveLoad.SuspendLayout();
|
menuSaveLoad.SuspendLayout();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
@ -73,7 +74,7 @@
|
|||||||
//
|
//
|
||||||
// buttonNextStep
|
// buttonNextStep
|
||||||
//
|
//
|
||||||
buttonNextStep.Location = new Point(553, 368);
|
buttonNextStep.Location = new Point(553, 342);
|
||||||
buttonNextStep.Name = "buttonNextStep";
|
buttonNextStep.Name = "buttonNextStep";
|
||||||
buttonNextStep.Size = new Size(85, 23);
|
buttonNextStep.Size = new Size(85, 23);
|
||||||
buttonNextStep.TabIndex = 5;
|
buttonNextStep.TabIndex = 5;
|
||||||
@ -123,11 +124,22 @@
|
|||||||
InfoToolStripMenuItem.ToolTipText = "Настоятельно рекомендуется к прочтению";
|
InfoToolStripMenuItem.ToolTipText = "Настоятельно рекомендуется к прочтению";
|
||||||
InfoToolStripMenuItem.Click += InfoToolStripMenuItem_Click;
|
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
|
// MainForm
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
ClientSize = new Size(800, 450);
|
ClientSize = new Size(800, 450);
|
||||||
|
Controls.Add(buttonReset);
|
||||||
Controls.Add(buttonPreviousStep);
|
Controls.Add(buttonPreviousStep);
|
||||||
Controls.Add(buttonNextStep);
|
Controls.Add(buttonNextStep);
|
||||||
Controls.Add(ButtonSearch);
|
Controls.Add(ButtonSearch);
|
||||||
@ -156,5 +168,6 @@
|
|||||||
private ToolStripMenuItem LoadToolStripMenuItem;
|
private ToolStripMenuItem LoadToolStripMenuItem;
|
||||||
private ToolStripMenuItem InfoToolStripMenuItem;
|
private ToolStripMenuItem InfoToolStripMenuItem;
|
||||||
private ToolTip toolTip1;
|
private ToolTip toolTip1;
|
||||||
|
private Button buttonReset;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -18,7 +18,7 @@ namespace KursiveWork
|
|||||||
private LinkedList list;
|
private LinkedList list;
|
||||||
private LinkedListVisualizer visualizer;
|
private LinkedListVisualizer visualizer;
|
||||||
private LinkedListManager manager;
|
private LinkedListManager manager;
|
||||||
|
|
||||||
private LinkedListParameters parameters;
|
private LinkedListParameters parameters;
|
||||||
|
|
||||||
|
|
||||||
@ -27,7 +27,8 @@ namespace KursiveWork
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
list = new LinkedList();
|
list = new LinkedList();
|
||||||
visualizer = new LinkedListVisualizer();
|
visualizer = new LinkedListVisualizer();
|
||||||
MessageBox.Show("Настоятельно рекомендуется ознакомиться с информацией с помощью меню сверху");
|
|
||||||
|
//MessageBox.Show("Настоятельно рекомендуется ознакомиться с информацией с помощью меню сверху");
|
||||||
manager = new LinkedListManager(parameters);
|
manager = new LinkedListManager(parameters);
|
||||||
Controls.Add(pictureBox);
|
Controls.Add(pictureBox);
|
||||||
pictureBox.Image = visualizer.Visualize(list.CreateState());
|
pictureBox.Image = visualizer.Visualize(list.CreateState());
|
||||||
@ -115,7 +116,7 @@ namespace KursiveWork
|
|||||||
private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
|
private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SaveFileDialog saveFileDialog = new SaveFileDialog();
|
SaveFileDialog saveFileDialog = new SaveFileDialog();
|
||||||
saveFileDialog.Filter = "Файл состояний (*.txt)|*.txt"; // Изменяем фильтр на *.txt
|
saveFileDialog.Filter = "Файл состояний (*.dat)|*.dat"; // Изменяем фильтр на *.txt
|
||||||
saveFileDialog.Title = "Сохранить состояния";
|
saveFileDialog.Title = "Сохранить состояния";
|
||||||
saveFileDialog.ShowDialog();
|
saveFileDialog.ShowDialog();
|
||||||
|
|
||||||
@ -128,7 +129,7 @@ namespace KursiveWork
|
|||||||
private void LoadToolStripMenuItem_Click(object sender, EventArgs e)
|
private void LoadToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
||||||
openFileDialog.Filter = "Файл состояний (*.txt)|*.txt"; // Изменяем фильтр на *.txt
|
openFileDialog.Filter = "Файл состояний (*.dat)|*.dat"; // Изменяем фильтр на *.txt
|
||||||
openFileDialog.Title = "Загрузить состояния";
|
openFileDialog.Title = "Загрузить состояния";
|
||||||
openFileDialog.ShowDialog();
|
openFileDialog.ShowDialog();
|
||||||
|
|
||||||
@ -142,6 +143,10 @@ namespace KursiveWork
|
|||||||
// Восстанавливаем первое состояние в списке list
|
// Восстанавливаем первое состояние в списке list
|
||||||
list.RestoreState(firstState);
|
list.RestoreState(firstState);
|
||||||
manager.storage.currentIndex = 0;
|
manager.storage.currentIndex = 0;
|
||||||
|
for (int i = 0; i < loadedStates.Count; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
pictureBox.Image = visualizer.Visualize(firstState);
|
pictureBox.Image = visualizer.Visualize(firstState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -151,5 +156,14 @@ namespace KursiveWork
|
|||||||
infoform infoform = new infoform();
|
infoform infoform = new infoform();
|
||||||
infoform.ShowDialog();
|
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.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.infoform.resources
|
||||||
C:\Users\ivans\source\repos\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.Inputform.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…
x
Reference in New Issue
Block a user