From 73c2d4f79f1f2a23d87db59fbade9db8bc43b20e Mon Sep 17 00:00:00 2001 From: wienkop <uwe.wienkop@th-nuernberg.de> Date: Mon, 19 Apr 2021 13:03:07 +0200 Subject: [PATCH] =?UTF-8?q?2021-04-19=20Intro=20bin=C3=A4re=20B=C3=A4ume?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04-2 DoppeltVerketteteListe/Personenliste.cs | 8 ++ 04-2 DoppeltVerketteteListe/Program.cs | 1 + 05-1 BinTree/05-1 BinTree.csproj | 9 +++ 05-1 BinTree/BinTree.cs | 63 +++++++++++++++ 05-1 BinTree/Program.cs | 17 ++++ 05-UbgCycleList-Mo/CycleList.cs | 81 +++++++++++++++++--- 05-UbgCycleList-Mo/Program.cs | 15 +++- Prog2WienkopSS2021.sln | 8 +- 8 files changed, 191 insertions(+), 11 deletions(-) create mode 100644 05-1 BinTree/05-1 BinTree.csproj create mode 100644 05-1 BinTree/BinTree.cs create mode 100644 05-1 BinTree/Program.cs diff --git a/04-2 DoppeltVerketteteListe/Personenliste.cs b/04-2 DoppeltVerketteteListe/Personenliste.cs index bd6c809..b2a61f8 100644 --- a/04-2 DoppeltVerketteteListe/Personenliste.cs +++ b/04-2 DoppeltVerketteteListe/Personenliste.cs @@ -140,5 +140,13 @@ namespace _04_2_DoppeltVerketteteListe } Console.WriteLine("-------------------"); } + public void PrintReverse() + { + for (LItem item = last; item != null; item = item.prev) + { + Console.WriteLine(item.name); + } + Console.WriteLine("-------------------"); + } } } diff --git a/04-2 DoppeltVerketteteListe/Program.cs b/04-2 DoppeltVerketteteListe/Program.cs index 91e9ad8..00e13d6 100644 --- a/04-2 DoppeltVerketteteListe/Program.cs +++ b/04-2 DoppeltVerketteteListe/Program.cs @@ -15,6 +15,7 @@ namespace _04_2_DoppeltVerketteteListe freunde.DeleteByName("Berta"); freunde.Print(); + freunde.PrintReverse(); } } } diff --git a/05-1 BinTree/05-1 BinTree.csproj b/05-1 BinTree/05-1 BinTree.csproj new file mode 100644 index 0000000..7efde34 --- /dev/null +++ b/05-1 BinTree/05-1 BinTree.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <RootNamespace>_05_1_BinTree</RootNamespace> + </PropertyGroup> + +</Project> diff --git a/05-1 BinTree/BinTree.cs b/05-1 BinTree/BinTree.cs new file mode 100644 index 0000000..8392dd6 --- /dev/null +++ b/05-1 BinTree/BinTree.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace _05_1_BinTree +{ + class BinTree + { + class BItem + { + public int number; + public BItem left = null, right = null; + public BItem (int Number) { number = Number; } + } + BItem root = null; + + public void BInsert(int Number) + { + BItem newItem = new BItem(Number); + if (root == null) + root = newItem; + else + { + bool done = false; + BItem item = root; + do + { + if (Number < item.number) // linker Teilbaum + { + if (item.left == null) + { + item.left = newItem; + done = true; + } + else + item = item.left; + } + else + { + if (item.right == null) + { + item.right = newItem; + done = true; + } + else + item = item.right; + } + } while (!done); + } + } + public bool FindItem(int Number) + { + BItem item = root; + while (item != null) + { + if (Number == item.number) + return true; + item = (Number < item.number) ? item.left : item.right; + } + return false; + } + } +} diff --git a/05-1 BinTree/Program.cs b/05-1 BinTree/Program.cs new file mode 100644 index 0000000..73d6c66 --- /dev/null +++ b/05-1 BinTree/Program.cs @@ -0,0 +1,17 @@ +using System; + +namespace _05_1_BinTree +{ + class Program + { + static void Main(string[] args) + { + BinTree bt = new BinTree(); + bt.BInsert(50); + bt.BInsert(80); + bt.BInsert(30); + bt.BInsert(40); + bt.BInsert(60); + } + } +} diff --git a/05-UbgCycleList-Mo/CycleList.cs b/05-UbgCycleList-Mo/CycleList.cs index 8047125..ac6ddee 100644 --- a/05-UbgCycleList-Mo/CycleList.cs +++ b/05-UbgCycleList-Mo/CycleList.cs @@ -11,19 +11,82 @@ namespace _05_UbgCycleList_Mo // Methoden: class CycleList { + class LItem + { + public string name; + public LItem prev=null, next = null; + public LItem(string Name) { name = Name; } + } + LItem first = null, last = null; + LItem iterator = null; + public void AddEnd(string Name) // wie bisher - { } + { + LItem newItem = new LItem(Name); + + if (first == null) + first = last = newItem; + else // Es gibt schon Listenelemente + { + newItem.prev = last; + last.next = newItem; + last = newItem; + first.prev = null; + } + } public void CloseCycle() // letztes mit dem ersten Element verbinden - { } + { + if (first != null) + { + last.next = first; + first.prev = last; + } + + } public void Print() - { } + { + if (first == null) + return; + + LItem item = first; + do + { + Console.WriteLine(item.name); + item = item.next; + // Ende, gdw. item == null oder item == first + } while (!(item == null || item == first)); + } + public IEnumerator<string> GetEnumerator() + { + if (first != null) + { + LItem item = first; + do + { + yield return item.name; + item = item.next; + // Ende, gdw. item == null oder item == first + } while (!(item == null || item == first)); + } + } public void SetIterator(int offset = 0) // Einen internen Zeiger (Iterator) auf das (anfang+offset) Listenelement setzen - { } + { + if (first == null) + iterator = null; + else + { + iterator = first; + for (int i = 0; i < offset; i++) + iterator = iterator.next; + } + } public string GetName() // Den string zurückliefern, der im Iterator-Listenelement gespeichert ist - { } - public void MoveToNext() - { } - public void MoveToPrev() - { } + { + return iterator.name; + } + public void MoveToNext() { iterator = iterator.next; } + public void MoveToPrev() { iterator = iterator.prev; } + + } } diff --git a/05-UbgCycleList-Mo/Program.cs b/05-UbgCycleList-Mo/Program.cs index 21f2f21..b35ff86 100644 --- a/05-UbgCycleList-Mo/Program.cs +++ b/05-UbgCycleList-Mo/Program.cs @@ -10,7 +10,7 @@ namespace _05_UbgCycleList_Mo cl.Print(); cl.AddEnd("Anton"); cl.AddEnd("Berta"); - cl.CloseCycle(); + //cl.CloseCycle(); cl.Print(); Console.WriteLine("-------------"); cl.AddEnd("Claudia"); @@ -25,6 +25,19 @@ namespace _05_UbgCycleList_Mo Console.WriteLine(cl.GetName()); cl.MoveToNext(); } + Console.WriteLine("-------------"); + for (int i = 0; i < 5; i++) + { + Console.WriteLine(cl.GetName()); + cl.MoveToPrev(); + } + + + Console.WriteLine("************"); + foreach (var item in cl) + { + Console.WriteLine(item); + } } } } diff --git a/Prog2WienkopSS2021.sln b/Prog2WienkopSS2021.sln index 089a74f..f17d85e 100644 --- a/Prog2WienkopSS2021.sln +++ b/Prog2WienkopSS2021.sln @@ -31,7 +31,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "04-UbgCycleList-Di", "04-Ub EndProject 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}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "05-UbgCycleList-Mo", "05-UbgCycleList-Mo\05-UbgCycleList-Mo.csproj", "{69264CD7-160B-45D5-8880-703EEBD6D7C2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "05-1 BinTree", "05-1 BinTree\05-1 BinTree.csproj", "{7C9FA089-4364-4326-A973-99FD15DAFBC1}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -99,6 +101,10 @@ Global {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 + {7C9FA089-4364-4326-A973-99FD15DAFBC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7C9FA089-4364-4326-A973-99FD15DAFBC1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C9FA089-4364-4326-A973-99FD15DAFBC1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7C9FA089-4364-4326-A973-99FD15DAFBC1}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE -- GitLab