zoukankan      html  css  js  c++  java
  • 用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;
    }
    }
    }

  • 相关阅读:
    WEB引入Google思源黑体
    Linux安装最新版Node.js
    JS判断值是否是数字
    高效jQuery的奥秘
    一个Web前端工程师或程序员的发展方向,未来困境及穷途末路
    javascript 模块化 (切记:学习思想)
    学习 正则表达式 js java c# python 通用
    Promise如何解决回调地狱
    VSCode 开发插件 推荐
    js移动端自适应动态设置html的fontsize
  • 原文地址:https://www.cnblogs.com/wei1349/p/13877705.html
Copyright © 2011-2022 走看看