Динамический список поменять адрес элемент с i на i+1 - C#
Формулировка задачи:
Есть динамический список, нам надо с одного места переставить в другое элемент, как это можно сделать, список написан с нуля, класс не используется. Вы наверно не смогли понять что я написал, поэтому смотрите на фото, я нарисую что надо сделать. Заранее спасибо.
Решение задачи: «Динамический список поменять адрес элемент с i на i+1»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WindowsFormsApplication1
class VstavkaM12 : MyList
{
private int[] mass;
private int Length;
private int CurNum;
public int kolVstvk=0;
public int kolSrvn=0;
public VstavkaM12(int n)
{
mass = new int[n];
Length = n;
CurNum = 0;
}
public void inputmass(int a, int b)
{
Random r = new Random();
for (int i = 0; i < this.Length; i++)
{
int n = r.Next(a, b);
Push(n);
}
}
public void inputFile(OpenFileDialog ofd)
{
if (ofd.ShowDialog() == DialogResult.OK)
{
string filename = ofd.FileName;
StreamReader sr = new StreamReader(filename, System.Text.Encoding.Default);
string s = sr.ReadLine();
string[] S = s.Split(' ');
mass = new int[S.Length];
Length = S.Length;
for (int i = 0; i < S.Length; i++)
{
Push(int.Parse(S[i]));
}
}
}
public void outputmass(TextBox tx, TextBox txkolVstvk, TextBox txkolSrvn)
{
if (kolSrvn == 0) tx.Text += "Начальный массив:\r\n";
else tx.Text += "\nОтсортированный массив:\r\n";
for (int i = 0; i < this.Length; i++)
{
tx.Text += Convert.ToString(this[i].Element) + " " + "\r";
}
txkolVstvk.Text = Convert.ToString(kolVstvk);
txkolSrvn.Text = Convert.ToString(kolSrvn);
}
public void PoiskM1(int x)
{
int min = this[x].Element;
int k = x;
for (int i = x; i < this.Length; i++)
{
kolSrvn++;
if (this[i].Element < min)
{
min = this[i].Element;
k = i;
}
if (min != this[x].Element)
{
int f = this[x].Element;
this[x].Element = min;
this[k].Element = f;
}
}
}
public void sortirovkaM1()
{
for (int i = 0; i < this.Length ; i++)
{
kolVstvk++;
PoiskM1(i);
}
}
public int PoiskM3(int i)
{
int j = 0;
int d = 0;
int c = this[i].Element;
j = i - 1;
while (j >= 0 && this[j].Element > c)
{
kolSrvn++;
d++;
j--;
}
return d;
}
void Swap(int x, int y)
{
int f = this[x].Element;
this[x].Element = this[y].Element;
this[y].Element = f;
kolVstvk++;
}
public void SortirovkaM3()
{
kolVstvk= 0;
for (int i = 0; i < this.Length; i++)
{
int t = PoiskM3(i);
int j = 1;
while (t != 0)
{
Swap(i - j, i - j + 1);
t--;
j++;
}
}
}
}
}
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
VstavkaM12 Z = new VstavkaM12(10);
Z.inputmass(0, 10);
Z.outputmass(textBox1, textBox3, textBox4);
Z.sortirovkaM1();
Z.outputmass(textBox1, textBox3, textBox4);
}
private void button2_Click(object sender, EventArgs e)
{
VstavkaM12 Z = new VstavkaM12(10);
Z.inputFile(openFileDialog1);
Z.outputmass(textBox1, textBox3, textBox4);
Z.sortirovkaM1();
Z.outputmass(textBox1, textBox3, textBox4);
}
private void button3_Click_1(object sender, EventArgs e)
{
VstavkaM12 Z = new VstavkaM12(10);
Z.inputmass(-100, 100);
Z.outputmass(textBox2, textBox6, textBox5);
Z.SortirovkaM3();
Z.outputmass(textBox2, textBox6, textBox5);
}
private void button4_Click_1(object sender, EventArgs e)
{
VstavkaM12 Z = new VstavkaM12(10);
Z.inputFile(openFileDialog1);
Z.outputmass(textBox2, textBox6, textBox5);
Z.SortirovkaM3();
Z.outputmass(textBox2, textBox6, textBox5);
}
}
}