From abe28beb73e106248e51f35e99e44809b9239f99 Mon Sep 17 00:00:00 2001 From: wienkop <uwe.wienkop@th-nuernberg.de> Date: Mon, 19 Apr 2021 10:00:31 +0200 Subject: [PATCH] =?UTF-8?q?2021-04-19=20=C3=9Cbungsvorlage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04-2 DoppeltVerketteteListe/Personenliste.cs | 22 ++++++++++++++ 04-2 DoppeltVerketteteListe/Program.cs | 7 +++-- 05-UbgCycleList-Mo/05-UbgCycleList-Mo.csproj | 9 ++++++ 05-UbgCycleList-Mo/CycleList.cs | 29 +++++++++++++++++++ 05-UbgCycleList-Mo/Program.cs | 30 ++++++++++++++++++++ Prog2WienkopSS2021.sln | 10 +++++-- 6 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 05-UbgCycleList-Mo/05-UbgCycleList-Mo.csproj create mode 100644 05-UbgCycleList-Mo/CycleList.cs create mode 100644 05-UbgCycleList-Mo/Program.cs diff --git a/04-2 DoppeltVerketteteListe/Personenliste.cs b/04-2 DoppeltVerketteteListe/Personenliste.cs index 40213d5..bd6c809 100644 --- a/04-2 DoppeltVerketteteListe/Personenliste.cs +++ b/04-2 DoppeltVerketteteListe/Personenliste.cs @@ -47,7 +47,29 @@ namespace _04_2_DoppeltVerketteteListe first = newItem; } } + public void AddSorted(string InsName) + { + // 1. Fall: Leere Liste oder Anfügen am Listenende + if (first == null || last.name.CompareTo(InsName) <= 0) + AddEnd(InsName); + else if (InsName.CompareTo(first.name) <= 0) + // 2. Fall: Anfügen am Listenende + AddFront(InsName); + else + { + // Wir wissen: Das neue Element ist NICHT das erste und nicht das letzte Element + LItem newItem = new LItem(InsName); + LItem item = first; + while (item.next.name.CompareTo(InsName) < 0) + item = item.next; + // bis hierher identisch zur einfach-verketteten Liste + newItem.next = item.next; // Vorwärtsverkettung vom neuen Element zur Restliste + newItem.prev = item; // Rückwärtsverkettung vom neuen Elenent zum Listenanfangsstück + item.next.prev = newItem; // Rückwärtsverkettung vom nachfolgenden Listenelement + item.next = newItem; // Vorwärtsverkettung zum neuen Element + } + } public void DeleteFirst() { // Fall 1: Liste ist leer diff --git a/04-2 DoppeltVerketteteListe/Program.cs b/04-2 DoppeltVerketteteListe/Program.cs index 7e81e21..91e9ad8 100644 --- a/04-2 DoppeltVerketteteListe/Program.cs +++ b/04-2 DoppeltVerketteteListe/Program.cs @@ -7,9 +7,10 @@ namespace _04_2_DoppeltVerketteteListe static void Main(string[] args) { Personenliste freunde = new Personenliste(); - freunde.AddEnd("Anton"); - freunde.AddEnd("Berta"); - freunde.AddEnd("Claudia"); + freunde.AddSorted("Berta"); + freunde.AddSorted("Claudia"); + freunde.AddSorted("Anton"); + freunde.AddSorted("Baerbel"); freunde.Print(); freunde.DeleteByName("Berta"); diff --git a/05-UbgCycleList-Mo/05-UbgCycleList-Mo.csproj b/05-UbgCycleList-Mo/05-UbgCycleList-Mo.csproj new file mode 100644 index 0000000..47b6c0e --- /dev/null +++ b/05-UbgCycleList-Mo/05-UbgCycleList-Mo.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <RootNamespace>_05_UbgCycleList_Mo</RootNamespace> + </PropertyGroup> + +</Project> diff --git a/05-UbgCycleList-Mo/CycleList.cs b/05-UbgCycleList-Mo/CycleList.cs new file mode 100644 index 0000000..8047125 --- /dev/null +++ b/05-UbgCycleList-Mo/CycleList.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace _05_UbgCycleList_Mo +{ + // Schreiben Sie eine doppelt-verkettete Liste, die die Möglichkeit bietet, + // das letzte Element wieder mit dem ersten zu verbinden (Zyklus schließen) + // Eingebettete Klasse Element + // Nutzlast: string name + // Methoden: + class CycleList + { + public void AddEnd(string Name) // wie bisher + { } + public void CloseCycle() // letztes mit dem ersten Element verbinden + { } + public void Print() + { } + public void SetIterator(int offset = 0) // Einen internen Zeiger (Iterator) auf das (anfang+offset) Listenelement setzen + { } + public string GetName() // Den string zurückliefern, der im Iterator-Listenelement gespeichert ist + { } + public void MoveToNext() + { } + public void MoveToPrev() + { } + } +} diff --git a/05-UbgCycleList-Mo/Program.cs b/05-UbgCycleList-Mo/Program.cs new file mode 100644 index 0000000..21f2f21 --- /dev/null +++ b/05-UbgCycleList-Mo/Program.cs @@ -0,0 +1,30 @@ +using System; + +namespace _05_UbgCycleList_Mo +{ + class Program + { + static void Main(string[] args) + { + CycleList cl = new CycleList(); + cl.Print(); + cl.AddEnd("Anton"); + cl.AddEnd("Berta"); + cl.CloseCycle(); + cl.Print(); + Console.WriteLine("-------------"); + cl.AddEnd("Claudia"); + cl.AddEnd("Dieter"); + cl.CloseCycle(); + cl.Print(); + Console.WriteLine("-------------"); + + cl.SetIterator(2); + for (int i = 0; i < 10; i++) + { + Console.WriteLine(cl.GetName()); + cl.MoveToNext(); + } + } + } +} diff --git a/Prog2WienkopSS2021.sln b/Prog2WienkopSS2021.sln index 3a73b0c..089a74f 100644 --- a/Prog2WienkopSS2021.sln +++ b/Prog2WienkopSS2021.sln @@ -27,9 +27,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "04-UbgListe-Mo", "04-UbgLis EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "04-1 VerketteteStrukturen2", "04-1 VerketteteStrukturen2\04-1 VerketteteStrukturen2.csproj", "{87021F69-DA51-4CA6-8394-C8819675D893}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "04-UbgCycleList-Di", "04-UbgCycleList-Di\04-UbgCycleList-Di.csproj", "{E1A44696-1661-47C6-B083-65BD53DA917A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "04-UbgCycleList-Di", "04-UbgCycleList-Di\04-UbgCycleList-Di.csproj", "{E1A44696-1661-47C6-B083-65BD53DA917A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "04-2 DoppeltVerketteteListe", "04-2 DoppeltVerketteteListe\04-2 DoppeltVerketteteListe.csproj", "{A253CA17-DA49-47FB-B8A6-C24D84C9A3E6}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "04-2 DoppeltVerketteteListe", "04-2 DoppeltVerketteteListe\04-2 DoppeltVerketteteListe.csproj", "{A253CA17-DA49-47FB-B8A6-C24D84C9A3E6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "05-UbgCycleList-Mo", "05-UbgCycleList-Mo\05-UbgCycleList-Mo.csproj", "{69264CD7-160B-45D5-8880-703EEBD6D7C2}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -93,6 +95,10 @@ Global {A253CA17-DA49-47FB-B8A6-C24D84C9A3E6}.Debug|Any CPU.Build.0 = Debug|Any CPU {A253CA17-DA49-47FB-B8A6-C24D84C9A3E6}.Release|Any CPU.ActiveCfg = Release|Any CPU {A253CA17-DA49-47FB-B8A6-C24D84C9A3E6}.Release|Any CPU.Build.0 = Release|Any CPU + {69264CD7-160B-45D5-8880-703EEBD6D7C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {69264CD7-160B-45D5-8880-703EEBD6D7C2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {69264CD7-160B-45D5-8880-703EEBD6D7C2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {69264CD7-160B-45D5-8880-703EEBD6D7C2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE -- GitLab