如何使用类在c#中的链表中创建并声明链表?
因此,我试图在链表的每个元素中创建一个链表,但我不知道如何用元素填充内部列表 我首先像这样声明外部列表如何使用类在c#中的链表中创建并声明链表?,c#,linked-list,C#,Linked List,因此,我试图在链表的每个元素中创建一个链表,但我不知道如何用元素填充内部列表 我首先像这样声明外部列表 RoomList<int> room = new RoomList<int>(); 但我不知道如何添加DailyListElement。我希望这是有道理的 因此,我想了解如何用DailyList元素填充DailyList。您需要向RoomList和DailyList类添加方法add public class RoomList<T> { public
RoomList<int> room = new RoomList<int>();
但我不知道如何添加DailyListElement。我希望这是有道理的
因此,我想了解如何用DailyList元素填充DailyList。您需要向
RoomList
和DailyList
类添加方法add
public class RoomList<T>
{
public DailyList head;
public DailyList Add()
{
var newItem = new DailyList();
if (head != null) head.next = newItem;
head = newItem;
return newItem;
}
public class DailyList
{
public DailyList next;
public DailyListElement head;
public DailyListElement Add()
{
var newItem = new DailyListElement();
if (head != null) head.next = newItem;
head = newItem;
return newItem;
}
public class DailyListElement
{
public T data;
public DailyListElement next;
}
}
}
公共教室列表
{
公共日报社社长;
公共每日列表添加()
{
var newItem=newDailyList();
如果(head!=null)head.next=newItem;
head=新项目;
返回新项目;
}
公共类每日列表
{
下一步是公众日报;
公共日报社社长;
公共DailyListElement添加()
{
var newItem=new DailyListElement();
如果(head!=null)head.next=newItem;
head=新项目;
返回新项目;
}
公共类DailyListElement
{
公共数据;
其次是公共每日列表;
}
}
}
用法示例:
var roomList = new RoomList<string>();
var dailyList = roomList.Add();
var dailyListElement = dailyList.Add();
dailyListElement.data = "StackOverflow rocks!";
Console.WriteLine(roomList.head.head.data);
var roomList=new roomList();
var dailyllist=roomList.Add();
var dailyListElement=dailyList.Add();
dailyListElement.data=“StackOverflow rocks!”;
Console.WriteLine(roomList.head.head.data);
输出:
堆积如山的岩石
您需要实现一个将添加新元素的方法 您可以通过遍历元素直到到达第一个元素,其中next为null,然后将新元素分配给next来实现这一点。
或者,您也可以维护指向最后一个元素的指针,并直接访问它。我根据您提供的代码尝试了链接列表中的链接列表。在这里,我添加了添加新节点和获取两个级别(外部和内部链表)的所有节点的方法。请在下面查找链表结构的代码以及客户端代码:
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var lst =new RoomList<string>();
var upperNode = new RoomList<string>.DailyList();
var element = new RoomList<string>.DailyList.DailyListElement();
element.data = "first";
upperNode.Add(element);
element = new RoomList<string>.DailyList.DailyListElement();
element.data = "second";
upperNode.Add(element);
lst.Add(upperNode);
upperNode = new RoomList<string>.DailyList();
element = new RoomList<string>.DailyList.DailyListElement();
element.data = "third";
upperNode.Add(element);
element = new RoomList<string>.DailyList.DailyListElement();
element.data = "fourth";
upperNode.Add(element);
lst.Add(upperNode);
foreach(var item in lst.GetAllNodes())
{
foreach(var child in item.GetAllNodes())
{
Console.WriteLine(child.data);
}
}
}
}
链表结构
public class RoomList<T> where T : class
{
private DailyList current;
private DailyList head;
public void Add(DailyList newItem)
{
if(current != null)
current.next = newItem;
current = newItem;
if(head == null)
head = current;
}
public IEnumerable<DailyList> GetAllNodes()
{
DailyList current = head;
List<DailyList> lst = new List<DailyList>();
while (current != null)
{
lst.Add(current);
current = current.next;
}
return lst;
}
public class DailyList
{
public DailyList next;
private DailyListElement head;
private DailyListElement current;
public void Add(DailyListElement newItem)
{
if(current != null)
current.next = newItem;
current = newItem;
if(head == null)
head = current;
}
public IEnumerable<DailyListElement> GetAllNodes()
{
DailyListElement current = head;
List<DailyListElement> lst = new List<DailyListElement>();
while (current != null)
{
lst.Add(current);
current = current.next;
}
return lst;
}
public class DailyListElement
{
public T data;
public DailyListElement next;
}
}
}
公共教室列表,其中T:class
{
私人日报;
私人日报社社长;
公共作废添加(每日列出新项)
{
如果(当前!=null)
current.next=newItem;
当前=新项目;
if(head==null)
水头=电流;
}
公共IEnumerable GetAllNodes()
{
每日列表电流=水头;
List lst=新列表();
while(当前!=null)
{
第一次添加(当前);
当前=当前。下一步;
}
返回lst;
}
公共类每日列表
{
下一步是公众日报;
私人日报社社长;
私有每日列表元素当前;
公共无效添加(DailyListElement新项)
{
如果(当前!=null)
current.next=newItem;
当前=新项目;
if(head==null)
水头=电流;
}
公共IEnumerable GetAllNodes()
{
DailyListElement电流=水头;
List lst=新列表();
while(当前!=null)
{
第一次添加(当前);
当前=当前。下一步;
}
返回lst;
}
公共类DailyListElement
{
公共数据;
其次是公共每日列表;
}
}
}
客户端代码:
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var lst =new RoomList<string>();
var upperNode = new RoomList<string>.DailyList();
var element = new RoomList<string>.DailyList.DailyListElement();
element.data = "first";
upperNode.Add(element);
element = new RoomList<string>.DailyList.DailyListElement();
element.data = "second";
upperNode.Add(element);
lst.Add(upperNode);
upperNode = new RoomList<string>.DailyList();
element = new RoomList<string>.DailyList.DailyListElement();
element.data = "third";
upperNode.Add(element);
element = new RoomList<string>.DailyList.DailyListElement();
element.data = "fourth";
upperNode.Add(element);
lst.Add(upperNode);
foreach(var item in lst.GetAllNodes())
{
foreach(var child in item.GetAllNodes())
{
Console.WriteLine(child.data);
}
}
}
}
使用系统;
使用System.Collections.Generic;
公共课程
{
公共静态void Main()
{
var lst=新房间列表();
var upperNode=new RoomList.dailyllist();
var元素=new RoomList.DailyList.DailyListElement();
element.data=“第一”;
添加(元素);
元素=新的RoomList.DailyList.DailyListElement();
element.data=“第二”;
添加(元素);
lst.Add(上节点);
upperNode=新建RoomList.DailyList();
元素=新的RoomList.DailyList.DailyListElement();
element.data=“第三”;
添加(元素);
元素=新的RoomList.DailyList.DailyListElement();
element.data=“第四”;
添加(元素);
lst.Add(上节点);
foreach(lst.GetAllNodes()中的变量项)
{
foreach(item.GetAllNodes()中的var子节点)
{
Console.WriteLine(子数据);
}
}
}
}
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var lst =new RoomList<string>();
var upperNode = new RoomList<string>.DailyList();
var element = new RoomList<string>.DailyList.DailyListElement();
element.data = "first";
upperNode.Add(element);
element = new RoomList<string>.DailyList.DailyListElement();
element.data = "second";
upperNode.Add(element);
lst.Add(upperNode);
upperNode = new RoomList<string>.DailyList();
element = new RoomList<string>.DailyList.DailyListElement();
element.data = "third";
upperNode.Add(element);
element = new RoomList<string>.DailyList.DailyListElement();
element.data = "fourth";
upperNode.Add(element);
lst.Add(upperNode);
foreach(var item in lst.GetAllNodes())
{
foreach(var child in item.GetAllNodes())
{
Console.WriteLine(child.data);
}
}
}
}