用C#实现链表

using System;
using System.Collections;
using System.Collections.Generic;

namespace 数据结构与算法
{
public class Base_Manager<T> where T : new() //泛型单例模式基类
{
private static T instance;
public static T GetInastance()
{
if (instance == null)
{
instance = new T();
}
return instance;
}
}
class Program
{
static void Main(string[] args)
{
Node node1 = new Node("once");
Node node2 = new Node("upon");
LinkedList linkedList = new LinkedList(node1);
node1.next_node = node2;
linkedList.insert_at_index(0, "second");
Console.WriteLine(linkedList.index_of("upon").ToString());
Console.ReadLine();
}
}
/* 实现链表包含两个类 Node和LinkedLlist */
class Node
{
public object data;
public Node next_node;
public Node(object data_value)
{
data = data_value;
}
}
class LinkedList
{
public Node first_node;
Node current_node, new_node,deleted_node;
int current_index = 0;
public LinkedList(Node firstnode_value)
{
first_node = firstnode_value;
}
public object read(int index) //读取某个索引
{
current_node = first_node;
current_index = 0;
while (current_index < index)
{
if (current_node.next_node == null)
{
return "所找索引不在链表中";
}
current_node = current_node.next_node;
current_index++;
}
return current_node.data;
}
public object index_of(object value) //查找某个值的索引
{
current_node = first_node;
current_index = 0;
while (current_node != null)
{
if (current_node.data == value)
{
return current_index;
}
current_node = current_node.next_node;
current_index++;
}
return "遍历链表没有找到这个数据";
}
public void insert_at_index(int index,object value) //插入到链表里面
{
new_node = new Node(value);
if (index == 0)
{
new_node.next_node = first_node;
first_node = new_node;
return;
}
current_node = first_node;
current_index = 0;
int prev_index = index - 1;
while (current_index < prev_index)
{
current_node = current_node.next_node;
current_index++;
}
new_node.next_node = current_node.next_node;
current_node.next_node = new_node;
}
public object delete_at_index(int index) //按索引删除
{
if (index == 0)
{
deleted_node = first_node;
first_node = first_node.next_node;
return deleted_node;
}
current_node = first_node;
current_index = 0;
while (current_index < index - 1)
{
current_node = current_node.next_node;
current_index++;
}
deleted_node = current_node.next_node;
current_node.next_node = deleted_node.next_node;
return 0;
}
}
}

原文地址:https://www.cnblogs.com/wei1349/p/13877705.html