Ahoj, měl jsem za úkol vytvořit obousměrný spojový seznam který umí addbefero, delete, save...
Ale sekl jsem se u LOAD. Soubor dokážu uložit, následně ho nahrát a zobrazit data, ale už nevím jak s ním následně pracovat. Jde mi o to abych ho mohl nahrát a pak tam třeba ještě něco přidat nebo něco odebrat.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace LinkedList
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Vytvoření seznamu:");
LinkedList<string> seznam = new LinkedList<string>();
string pokracovat = "ano";
while (pokracovat == "ano")
{
Console.WriteLine("Vyberte operaci, kterou chcete provédst! ");
Console.WriteLine("1 - přidání ");
Console.WriteLine("2 - odebrání ");
Console.WriteLine("3 - přidání slova za vybrané slovo");
Console.WriteLine("4 - přidání slova před vybrané slovo");
Console.WriteLine("5 - hledání slova");
Console.WriteLine("6 - vypíše seznam");
Console.WriteLine("7 - smaže seznam");
Console.WriteLine("8 - uloží do souboru");
Console.WriteLine("9 - nahraje ze souboru");
int volba = int.Parse(Console.ReadLine());
switch (volba)
{
case 1:
Console.WriteLine("Přidání slova do seznamu jako poslední");
string pridani = Console.ReadLine();
seznam.AddLast(pridani);
break;
case 2:
Console.WriteLine("Zadejte slovo které chcete odebrat ze seznamu");
string remove = Console.ReadLine();
seznam.Remove(remove);
break;
case 3:
Console.WriteLine("Přidání slova za vybrané slovo");
Console.WriteLine("Za které slovo chcete přidat údaj");
string hledaneZa = Console.ReadLine();
seznam.Find(hledaneZa);
Console.WriteLine("Zadejte slovo, které chcete přidat");
string hledaneZa1 = Console.ReadLine();
LinkedListNode<string> pridaniZa1 = seznam.Find(hledaneZa);
seznam.AddAfter(pridaniZa1, hledaneZa1);
break;
case 4:
Console.WriteLine("Přidání slova před vybrané slovo");
Console.WriteLine("Před které slovo chcete přidat údaj");
string hledanePred = Console.ReadLine();
seznam.Find(hledanePred);
Console.WriteLine("Zadejte slovo, které chcete přidat");
string hledanePred1 = Console.ReadLine();
LinkedListNode<string> pridaniZa2 = seznam.Find(hledanePred);
seznam.AddBefore(pridaniZa2, hledanePred1);
break;
case 5:
Console.WriteLine("Napiště slovo, které chcete najít");
string find = Console.ReadLine();
LinkedListNode<string> find1 = seznam.Find(find);
if (find1 == null)
{
Console.WriteLine("Slovo " + find + " neni v seznamu");
}
else
Console.WriteLine("Slovo " + find + " je v seznamu");
break;
case 6:
Console.Clear();
foreach (string i in seznam)
Console.WriteLine("{0} ", i);
break;
case 7:
Console.WriteLine("Chcete smazat celý seznam? (ano/ne)");
string smazat = Console.ReadLine();
if (smazat == "ano")
{
seznam.Clear();
}
break;
case 8:
using (StreamWriter sw = new StreamWriter(@"soubor.txt"))
{
foreach (string i in seznam)
sw.WriteLine("{0} ", i);
sw.Flush();
}
Console.WriteLine("Do souboru bylo zapsáno.");
break;
case 9:
Console.WriteLine("Vypisuji soubor na obrazovku: ");
using (StreamReader sr = new StreamReader(@"soubor.txt"))
{
string soubor;
while ((soubor = sr.ReadLine()) != null)
{
Console.WriteLine(soubor);
}
}
break;
case 10:
break;
}
Console.WriteLine("Přejete si udělat další změnu v seznamu? [ano/ne]");
pokracovat = Console.ReadLine();
}
Console.WriteLine("Děkuji za použití a přeji pěkný den");
Console.ReadKey();
}
}
}
Budu rád za jakoukoliv pomoc, zkoušel jsem FileStream jen mi to nešlo :-( to samé Stream.CopyTo. Hold nevim jak na to.