• 单向链表(C#)


     using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;
    using System.Threading;
    using System.IO;
    using System.Collections;
    
    namespace ConsoleApplication2
    {
        public class Program
        {
            public static void Main()
            {
                SinglyLinked<int> noteLink = new SinglyLinked<int>();
    
                Console.WriteLine("新增数据");
                noteLink.AddNote(5);
                noteLink.AddNote(8);
                noteLink.AddNote(4);
                noteLink.AddNote(1);
                noteLink.AddNote(2);
                foreach (var item in noteLink)
                {
                    Console.WriteLine(item);
                }
    
                Console.WriteLine("删除数据2");
                noteLink.RemoveNote(2);
                foreach (var item in noteLink)
                {
                    Console.WriteLine(item);
                }
    
                Console.WriteLine("在8前面增加99");
                noteLink.InsertItemBefore(8,99);
    
                foreach (var item in noteLink)
                {
                    Console.WriteLine(item);
                }
    
                Console.WriteLine("在1后面增加55");
                noteLink.InsertItemAfter(1,55);
                foreach (var item in noteLink)
                {
                    Console.WriteLine(item);
                }
    
                Console.WriteLine("节点数量:"+noteLink.Count);
    
                Console.Read();
            }
        }
    
    
    
        public class SinglyLinked<T> where T : IComparable
        {
            public DNote<T> HeadNote;
    
            public int Count{get;set;}
    
            public SinglyLinked()
            {
                HeadNote = new DNote<T>(default(T));
            }
    
            public void AddNote(T t)
            {
                DNote<T> tNote = HeadNote;
                while (tNote.NextNote!= null)
                {
                    tNote = tNote.NextNote;
                }
    
                tNote.NextNote = new DNote<T>(t);
    
                Count++;
            }
    
            public IEnumerator<T> GetEnumerator()
            {
                DNote<T> tNote = HeadNote;
                while (tNote.NextNote != null)
                {
                    tNote = tNote.NextNote;
                    yield return tNote.NoteValue;
                }
            }
    
            public void RemoveNote(T t)
            {
                DNote<T> tNote = HeadNote;
                do
                {
                    if (tNote.NextNote.NoteValue.CompareTo(t) == 0)
                    {
                        tNote.NextNote = tNote.NextNote.NextNote;
                        Count--;
                    }
                    tNote = tNote.NextNote;
                } while (tNote!=null && tNote.NextNote!=null);
            }
    
            public void InsertItemBefore(T t,T insertNoteValue)
            {
                DNote<T> tNote = HeadNote;
                do
                {
                    if (tNote.NextNote.NoteValue.CompareTo(t) == 0)
                    {
                        var nextNote = tNote.NextNote;
                        var newNote = new DNote<T>(insertNoteValue);
                        newNote.NextNote = nextNote;
                        tNote.NextNote = newNote;
                        Count++;
                        break;
                    }
                    tNote = tNote.NextNote;
                } while (tNote != null && tNote.NextNote != null);
            }
    
    
            public void InsertItemAfter(T t, T insertNoteValue)
            {
                DNote<T> tNote = HeadNote;
                do
                {
                    if (tNote.NextNote.NoteValue.CompareTo(t) == 0)
                    {
                        var nextNote = tNote.NextNote.NextNote;
                        var newNote = new DNote<T>(insertNoteValue);
                        newNote.NextNote = nextNote;
                        tNote.NextNote.NextNote = newNote;
                        Count++;
                        break;
                    }
                    tNote = tNote.NextNote;
                } while (tNote != null && tNote.NextNote != null);
            }
        }
    
    
        public class DNote<T>
        {
            public DNote<T> NextNote { get; set;}
    
            public T NoteValue { get; set; }
    
    
            public DNote(T t)
            {
                NoteValue = t;
            }
        }
    
    
    }
  • 相关阅读:
    vim 编辑器使用
    PHP高并发高负载系统架构(转载)
    类的使用
    linux下EC20 4G模块驱动移植
    linux 4G模块拨号脚本
    linux4.1.4上移植ME909s-821,MU609 4G模块驱动
    shell脚本语之运算符
    vim的列编辑操作
    linux下普通用户添加 sudo 免密码
    4G模块在AM335x上的移植
  • 原文地址:https://www.cnblogs.com/bbvi/p/5045539.html
Copyright © 2020-2023  润新知