参考了:https://www.cnblogs.com/wjcnet/p/3424533.html
第一次写链表,望留言指正!
源代码(包含所有信息):
/*单链表使用方法*/
/*
*初始化链表:创建一个链表类SingleLinkedList的对象。传入一个结点以初始化链表或使用默认构造函数创建一个空链表
* 插入操作:void Insert(Node<T> node,int pos)
* 追加操作:void Append(T t_data) void Append(Node<T> node)
* 删除操作:void RemoveAt(int pos)
* 获取某个位置的结点的方法:Node<T> GetAt(int pos)
* 查找某个数据所在结点的方法:Node<T> Find(T t_data)
* 打印整个链表结点的数据域(从头结点开始):void Print()
* 判断链表是否为空:bool IsEmpty()
* 获取链表长度:使用Length属性
* 清空链表:void Clear()
* 反转链表:void Converse()
* 合并两个链表:SingleLinkedList<T> Combine(SingleLinkedList<T> list1,SingleLinkedList<T> list2)
*/
/*日志*/
/*
*2018.10.4第一次创建
2018.10.5 第一次增改:增加链表反转的方法,增加合并两个链表的静态方法
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace singleLinkedList
{
//节点类
public class Node<T>
{
//属性
public T Data
{ get; set; }
public Node<T> Next
{ get; set; }
//方法
public Node(T t_data = default(T))
{
Data = t_data;
Next = null;
}
};
//单链表类(工具)
public class SingleLinkedList<T> {
//属性
public Node<T> Head
{get; set;}
public int Length { get; private set; }
//方法
public SingleLinkedList()
{
Head = null;
Length = 0;
}
public SingleLinkedList(Node<T> node)
{
Head = node;
Head.Next = null;
Length = 1;
}
public void Append(T t_data)//追加节点:以传入结点的数据域的方式
{
Node<T> temp = new Node<T>(t_data);
if (Head == null)
{
Head = temp;
Length++;
return ;
}
Node<T> h = Head;
while (h.Next != null)
{
h = h.Next