C#——自定义泛型链表DEMO
生活随笔
收集整理的這篇文章主要介紹了
C#——自定义泛型链表DEMO
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題描述
?已定義如下一個泛型類和泛型接口,請創建一個泛型的MyLinkedList類,表示一個單向鏈表,滿足指定接口和功能。
1)泛型類,代表鏈表中的節點
? ? public class Node<T> {public T Value { get; set; }public Node<T> Next { get; set; }public Node(T value){Value = value;Next = null;} }2)泛型接口,定義了列表上可執行的操作
? ? public interface IMyList<T> {void AddToHead(T value);void AddToTail(T value);int Count { get; }bool Contains(T value); }3)要求鏈表繼承IMyList,實現接口中定義的功能,并實現:一無參構造方法,一有參構造方法(支持任意數量參數),重寫ToString方法(生成類似1--> 8--> 9--> 43--> 22-->的字符串)。
? ?
4)最終,使用下述Main方法進行測試。
public static void Main() {MyLinkedList<int> lst = new MyLinkedList<int>();Console.WriteLine(lst.Count);Random rd = new Random();for (int i = 0; i < 10; i++){lst.AddToTail(rd.Next(100));}lst.AddToHead(100);lst.AddToTail(100);Console.WriteLine(lst);Console.WriteLine(lst.Count);Console.WriteLine(lst.Contains(100));MyLinkedList<int> list = new MyLinkedList<int>(1, 8, 9, 43, 22);Console.WriteLine(list); }源代碼?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Homework5 {//1)泛型類,代表鏈表中的節點public class Node<T>{public T Value { get; set; }public Node<T> Next { get; set; }public Node(T value){Value = value;Next = null;}}//2)泛型接口,定義了列表上可執行的操作public interface IMyList<T>{void AddToHead(T value);void AddToTail(T value);int Count { get; }bool Contains(T value);}//3)要求鏈表繼承IMyList,實現接口中定義的功能,并實現:一無參構造方法,一有參構造方法(支持任意數量參數),重寫ToString方法(生成類似1--> 8--> 9--> 43--> 22-->的字符串)。class MyLinkedList<T> : IMyList<T>{private Node<T> head;public MyLinkedList(){}public MyLinkedList(params T[] value) { foreach(T temp in value){AddToTail(temp);}}public int Count {get{int count = 0;if (head != null) {Node<T> temp = head;while (temp!= null){count++;temp = temp.Next;}}return count;} }public void AddToHead(T value){var newNode = new Node<T>(value);if (head == null){head = newNode;}else{newNode.Next = head;head = newNode;}}public void AddToTail(T value){var newNode = new Node<T>(value);if (head == null){head = newNode;}else{Node<T> temp = head;while (temp.Next != null) {temp = temp.Next;}temp.Next = newNode;}}public bool Contains(T value){if (head != null) {Node<T> temp = head;while (temp!= null){if (temp.Value.Equals(value)){return true;}temp = temp.Next;}} return false;}public override string ToString(){string result = "";if (head != null){Node<T> temp = head;while (temp != null){result += temp.Value;if (temp.Next != null)result += ',';temp = temp.Next;}}return result;}}class Program{static void Main(string[] args){MyLinkedList<int> lst = new MyLinkedList<int>();Console.WriteLine(lst.Count);Random rd = new Random();for (int i = 0; i < 10; i++){lst.AddToTail(rd.Next(100));}lst.AddToHead(100);lst.AddToTail(100);Console.WriteLine(lst);Console.WriteLine(lst.Count);Console.WriteLine(lst.Contains(100));MyLinkedList<int> list = new MyLinkedList<int>(1, 8, 9, 43, 22);Console.WriteLine(list);}} }運行結果
總結
以上是生活随笔為你收集整理的C#——自定义泛型链表DEMO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio 2019 +
- 下一篇: Vue——自定义组件的 v-model