您的位置:首页 > 编程语言 > C#

c#中基本链表的实现

2016-12-01 16:27 253 查看
1.基本链表的实现

功能:插入,删除,遍历显示

using System;
using System.Collections;
using System.Diagnostics.Eventing.Reader;
using System.Security.Cryptography.X509Certificates;
using System.Text;

public class Node
{
public Object item; //数据
public Node Link; //指针

public Node()
{
item = "header"; //创建节点s
Link = null;

}

public Node(Object str)
{
item = str; //使用指定字符构建节点
Link = null;
}
}

public class LinkList
{
public Node header; //头结点
public LinkList()
{//构造函数
header=new Node(); //构造头结点
}

public void Insert(Object str, Object after)
{//在某一节点后面插入节点
Node current = Find(after); //查找某一节点
if (current == null)
{
Console.WriteLine("没有找到前节点无法完成插入操作");
return;
}

Node newnode=new Node(str);
newnode.Link = current.Link; //完成插入操作
current.Link = newnode;

}

private Node Find(Object str)
{//查找某一节点
Node current = header;
while(current!= null&¤t.item!=str)
{//如果当前节点不为空s
current = current.Link;
}
return current; //返回当前节点
}

public void print() //打印所有节点
{
Node current = header.Link;
while(current != null)
{
Console.WriteLine(current.item);
current = current.Link;
}
}

public Node PreFind(Object str)
{//查找这个节点的上一个节点
Node current = header;
while (current.Link.item != str && current.Link!=null)
{//如果不为空并且不为这个值
current = current.Link;
}
return current;

}

public void Remove(Object str)
{
Node current = PreFind(str); //查找这个节点的前一个节点
if (current.Link == null)
{
Console.WriteLine("没有找到这个要删除的节点");
return;
}

if (current.Link.Link != null)
{//要删除节点的后面还有节点
current.Link = current.Link.Link; //这节连接
}
else
{
current.Link = null; //否则直接断开连接
}
}

}

public class Test
{
public static void Main()
{
LinkList list=new LinkList();
list.Insert("jiajia1", "header");
list.Insert("jiajia2", "jiajia1");
list.Insert("jiajia3", "jiajia2");
list.Insert("jiajia4", "jiajia3");
list.Remove("jiajia4"); //删除节点
list.print();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: